nollaversio/ laravel-sqs-jobless
接收来自Amazon SQS的自定义消息
dev-master
2018-12-10 07:05 UTC
Requires
- php: >=5.5.0
- aws/aws-sdk-php: ~3.0
- illuminate/support: ^5.3
This package is not auto-updated.
Last update: 2024-09-18 19:09:09 UTC
README
允许接收来自Amazon SQS的自定义消息。
注意,消息不一定是JSON格式。默认情况下,将使用JoblessHandler处理程序(通过原始消息字符串调用)。然后您可以对该字符串执行任何操作。
为什么?
因为Laravel默认只允许从SQS接收作业消息。这些作业消息格式非常严格。任何不符合该格式的SQS消息都会被退回到队列。
此组件允许Laravel接收并处理任意SQS消息。
**支持Laravel 5.3**。
不支持Laravel 5.2或更早版本。
更新18.1.18:由geraldosm进一步开发,应支持Laravel 5.5。
安装
步骤1
composer require nollaversio/laravel-sqs-jobless
注意!如果您因为最小稳定性问题而遇到安装错误,您需要将键对"minimum-stability": "dev"添加到您的composer.json文件中。
步骤2
添加服务提供程序
'providers' => [ // ... 'Nollaversio\SQSJobless\JoblessSQSServiceProvider', ];
步骤3
php artisan vendor:publish
使用方法
使用方法需要四个步骤
- 确保已添加服务提供程序。
- 在config/queue.php中创建新记录
- 创建App/Jobs/JoblessHandler类
- 将队列驱动程序更改为sqs-jobless
- 启动队列。
1.
'providers' => [ // ... 'Nollaversio\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', ],
3.
// App\Jobs\JoblessHandler.php <?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; class JoblessHandler 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中轻松定义自己的消息处理程序类。您可以在那里这样做。
请注意,一次只能定义一个处理程序。