lostlink / laravel-messenger
此包的最新版本(2.1.3)没有提供许可证信息。
向Ingestor发送消息
2.1.3
2024-09-25 17:44 UTC
Requires
- php: ^8.0||^8.1||^8.2||^8.3
- aws/aws-sdk-php: ^3.288.0.0
Requires (Dev)
- illuminate/support: ^10.0||^11.0
- laravel/pint: ^1.17
- orchestra/testbench: ^8.0||^9.0
- phpunit/phpunit: ^9.5||^11.0
README
LostLink Laravel-Messenger
是一个Laravel包,用于异步向各种服务发送消息,而不会阻塞您的应用程序的处理。消息会在PHP destruct()
阶段排队并发送,确保应用程序的性能不受外部服务通信的影响。
特性
- 非阻塞消息发送:消息在PHP请求生命周期之后处理。
- 可扩展的驱动系统:添加自定义驱动程序以向您选择的服务发送消息。
- 简单配置:使用环境变量设置不同的驱动程序。
- 速率限制:控制消息发送速率,避免超过服务限制。
支持的驱动程序
安装
-
通过Composer安装此包
composer require lostlink/laravel-messenger
-
发布配置文件(可选)
php artisan vendor:publish --tag=messenger-config
-
配置您要使用的驱动程序的环境变量。
配置
此包支持多个驱动程序,您可以使用环境变量设置默认驱动程序。以下是一个示例配置文件
return [ 'default' => env('LARAVEL_MESSENGER_DRIVER', 'log'), 'drivers' => [ 'log' => [ 'class' => Lostlink\Messenger\Drivers\Log::class, 'rate_limit' => [ 'enabled' => env('LARAVEL_MESSENGER_LOG_RATE_LIMIT_ENABLED', false), 'max_attempts' => env('LARAVEL_MESSENGER_LOG_RATE_LIMIT_MAX_ATTEMPTS', 10), 'decay_seconds' => env('LARAVEL_MESSENGER_LOG_RATE_LIMIT_DECAY_SECONDS', 60), ], ], 'kinesis' => [ 'class' => Lostlink\Messenger\Drivers\Kinesis::class, 'name' => env('LARAVEL_MESSENGER_KINESIS_STREAM_NAME'), 'region' => env('LARAVEL_MESSENGER_KINESIS_STREAM_AWS_REGION', env('AWS_DEFAULT_REGION')), 'aws_key' => env('LARAVEL_MESSENGER_KINESIS_STREAM_AWS_KEY', env('AWS_ACCESS_KEY_ID')), 'aws_secret_key' => env('LARAVEL_MESSENGER_KINESIS_STREAM_AWS_SECRET_KEY', env('AWS_SECRET_ACCESS_KEY')), 'rate_limit' => [ 'enabled' => env('LARAVEL_MESSENGER_KINESIS_RATE_LIMIT_ENABLED', false), 'max_attempts' => env('LARAVEL_MESSENGER_KINESIS_RATE_LIMIT_MAX_ATTEMPTS', 10), 'decay_seconds' => env('LARAVEL_MESSENGER_KINESIS_RATE_LIMIT_DECAY_SECONDS', 60), ], ], 'tinybird' => [ 'class' => Lostlink\Messenger\Drivers\Tinybird::class, 'name' => env('LARAVEL_MESSENGER_TINYBIRD_DATA_SOURCE_NAME'), 'token' => env('LARAVEL_MESSENGER_TINYBIRD_TOKEN'), 'endpoint' => env('LARAVEL_MESSENGER_TINYBIRD_ENDPOINT', 'https://api.us-east.aws.tinybird.co/v0/events'), 'rate_limit' => [ 'enabled' => env('LARAVEL_MESSENGER_TINYBIRD_RATE_LIMIT_ENABLED', false), 'max_attempts' => env('LARAVEL_MESSENGER_TINYBIRD_RATE_LIMIT_MAX_ATTEMPTS', 40), // Free tier limit 'decay_seconds' => env('LARAVEL_MESSENGER_TINYBIRD_RATE_LIMIT_DECAY_SECONDS', 3600), // Free tier limit ], ], ], ];
可用的环境变量
用法
使用 LostLink Laravel-Messenger
发送消息很简单。在配置环境变量后,您可以使用 send
方法
use \Lostlink\Messenger\Messenger; Messenger::send([ "timestamp" => "2022-10-27T11:43:02.099Z", "transaction_id" => "8d1e1533-6071-4b10-9cda-b8429c1c7a67", "name" => "Bobby Drake", "email" => "bobby.drake@pressure.io", "age" => 42, "passport_number" => 3847665, "flight_from" => "Barcelona", "flight_to" => "London", "extra_bags" => 1, "flight_class" => "economy", "priority_boarding" => false, "meal_choice" => "vegetarian", "seat_number" => "15D", "airline" => "Red Balloon" ]);
动态更新配置
您可以通过连接和传递数组给 config([])
方法来修改特定消息的配置。这允许您覆盖该特定消息的默认驱动设置。以下是一个示例
use \Lostlink\Messenger\Messenger; Messenger::send([ "timestamp" => "2022-10-27T11:43:02.099Z", "transaction_id" => "8d1e1533-6071-4b10-9cda-b8429c1c7a67", "name" => "Bobby Drake", "email" => "bobby.drake@pressure.io", "age" => 42, "passport_number" => 3847665, "flight_from" => "Barcelona", "flight_to" => "London", "extra_bags" => 1, "flight_class" => "economy", "priority_boarding" => false, "meal_choice" => "vegetarian", "seat_number" => "15D", "airline" => "Red Balloon" ]) ->driver('tinybird') // Change the driver to "tinybird" for this message ->config([ 'name' => 'example_events', // Change the data source name to "example_events" for this message 'token' => 'your_token', // Change the token for this message 'endpoint' => 'https://api.us-east.aws.tinybird.co/v0/events', // Change the endpoint for this message 'rate_limit' => [ 'enabled' => true, // Enable rate limiting for this message to use Tinybird Free Tier @ 1000/day 'max_attempts' => 40, // Set the maximum number of attempts before rate limiting is enforced 'decay_seconds' => 3600, // Set the number of seconds before the rate limit resets ], ]);
添加自定义驱动程序
要创建和添加您自己的驱动程序,只需通过实现所需接口扩展驱动系统。
-
请确保发布laravel-messenger配置文件
php artisan vendor:publish --tag=messenger-config
-
调整laravel-messenger配置,包括您的自定义驱动程序的名称和类
return [ ... 'drivers' => [ ... 'mycustomdriver' => [ 'class' => \App\Messenger\Drivers\MyCustomDriver::class, 'name' => env('MY_CUSTOM_DRIVER_NAME'), 'token' => env('MY_CUSTOM_DRIVER_TOKEN'), 'endpoint' => env('MY_CUSTOM_DRIVER_ENDPOINT'), 'rate_limit' => [ 'enabled' => env('MY_CUSTOM_DRIVER_RATE_LIMIT_ENABLED', false), 'max_attempts' => env('MY_CUSTOM_DRIVER_RATE_LIMIT_MAX_ATTEMPTS', 10), 'decay_seconds' => env('MY_CUSTOM_DRIVER_RATE_LIMIT_DECAY_SECONDS', 60), ], ], ], ... ];
-
创建一个扩展 \LostLink\Drivers\Driver 的类
class MyCustomDriver extends Driver { public function handle(): void { $response = Http::withToken($this->message->token ?? $this->message->config->get('token')) ->acceptJson() ->withQueryParameters([ 'name' => $this->message->stream ?? $this->message->config->get('name'), ]) ->post( $this->message->endpoint ?? $this->message->config->get('endpoint'), $this->message->body ); $response->throw(); } } ```
许可证
此包是开源软件,许可协议为 MIT许可。