adalessa/laravel-sqs-jobless

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

dev-master 2018-08-29 17:29 UTC

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',
];

使用方法

使用方法需要四个步骤

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

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 中轻松定义自己的处理器类。你可以在这里做。

注意,一次只能定义一个处理器。