adalessa / laravel-sqs-jobless
接收来自Amazon SQS的自定义消息
dev-master
2018-08-29 17:29 UTC
Requires
- aws/aws-sdk-php: ~3.0
- illuminate/support: ^5.4 || ^5.5 || ^5.6
This package is not auto-updated.
Last update: 2024-09-20 21:47:38 UTC
README
允许接收来自Amazon SQS的自定义消息。
注意:消息不必是JSON格式。默认情况下,Handler(JoblessHandler)会以原始消息字符串的形式被调用。然后你可以对这个字符串进行任何操作。
为什么?
因为Laravel默认只允许接收来自SQS的工作消息。这些工作消息具有非常严格的形式。任何不符合该形式的SQS消息都将被放回队列。
该组件允许任意SQS消息被Laravel接收和处理。
安装
步骤 1
composer require adalessa/laravel-sqs-jobless
注意! 如果你因为minimum-stability问题遇到安装错误,你需要在你的composer.json文件中添加键对 "minimum-stability": "dev"。
步骤 2
添加服务提供者
'providers' => [ // ... 'Adalessa\SQSJobless\JoblessSQSServiceProvider', ];
使用方法
使用方法需要四个步骤
- 确保已添加服务提供者。
- 在 config/queue.php 中创建新记录
- 创建 App/Jobs/YourJob 类
- 将队列驱动程序更改为 sqs-jobless
- 启动队列。
1.
'providers' => [ // ... 'Adalessa\SQSJobless\JoblessSQSServiceProvider', ];
2.
// app.config.queue.php 'sqs-jobless' => [ 'driver' => 'sqs-jobless', 'key' => '1122334455667788XX', 'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx', 'prefix' => 'https://sqs.eu-central-1.amazonaws.com/11223344556677', 'queue' => 'msgs', 'region' => 'eu-central-1', 'class' => \App\Jobs\YourJob::class, ],
3.
// App\Jobs\YourJob.php <?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; class YourJob implements ShouldQueue { use InteractsWithQueue, Queueable, SerializesModels; protected $passedInData; /** * Create a new job instance. * * @return void */ public function __construct($data) { // $data is STRING containing the msg content from SQS $this->passedInData = $data; } /** * Execute the job. * * @return void */ public function handle() { \Log::info($this->passedInData); // Check laravel.log, it should now contain msg string. } }
4.
// .env QUEUE_DRIVER=sqs-jobless
5.
在命令行
php artisan queue:work
自定义消息处理器
你可以在 config.sqs-jobless.php 中轻松定义自己的处理器类。你可以在这里做。
注意,一次只能定义一个处理器。