nollaversio/laravel-sqs-jobless

接收来自Amazon SQS的自定义消息

dev-master 2018-12-10 07:05 UTC

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

使用方法

使用方法需要四个步骤

  1. 确保已添加服务提供程序。
  2. config/queue.php中创建新记录
  3. 创建App/Jobs/JoblessHandler
  4. 将队列驱动程序更改为sqs-jobless
  5. 启动队列。

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中轻松定义自己的消息处理程序类。您可以在那里这样做。

请注意,一次只能定义一个处理程序。