mehr-it/lara-sqs-plain

在 Laravel 中接收自定义/普通 SQS 消息

2.4.0 2022-02-15 18:14 UTC

This package is auto-updated.

Last update: 2024-09-20 21:12:05 UTC


README

允许在 Laravel 中接收自定义/普通 SQS 消息。如果您需要处理来自 Laravel 外部的第三方消息,这将非常有用。

您将在处理类构造函数中接收纯文本消息内容。您可以针对每个队列指定自己的处理类。

本软件包基于 mehr-it/lara-sqs-ext 软件包,并实现了其中大部分功能。

安装

composer require mehr-it/lara-sqs-plain

本软件包使用 Laravel 的软件包自动发现,因此服务提供程序将自动加载。

队列配置

只需像配置 Laravel 中的任何其他 SQS 队列一样配置队列连接。唯一的区别是 message_handler 选项,它必须是应处理消息的类的名称。

'sqs-plain-conn' => [
	'driver'          => 'sqs-plain',
	'key'             => '112233445566778899',
	'secret'          => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
	'prefix'          => 'https://sqs.eu-central-1.amazonaws.com/11223344556677',
	'queue'           => 'msgs',
	'region'          => 'eu-central-1',
	'message_handler' => 'App\\Job\\MyPlainHandler',
],

长轮询

要启用长轮询,您可以将选项 message_wait_timeout 添加到队列配置中。这将设置 WaitTimeSeconds 参数为配置的时间量。

'message_wait_timeout' => 20,

消息处理器

要创建 SQS 消息的处理程序,只需扩展 SqsPlainMessageHandler 类。对于每条消息,都会调用 handle 函数,并且原始消息体将可在 message 属性中找到。

class MyPlainHandler extends SqsPlainMessageHandler {
	
	public function handle() {
	
		$rawMessage = $this->message;
	}
					
}

基类已经实现了 InteractsWithQueueInteractsWithSqsQueue 特性,因此您可以与队列进行交互。

消息处理器可以定义与常见作业相同的属性,以控制作业工作者。这包括 triestimeouttimeoutAtautomaticQueueVisibilityautomaticQueueVisibilityExtraretryUntil 方法。

感谢

感谢 Jussi Hamalainen 编写了 jusahah/laravel-sqs-jobless 软件包,该软件包为这个软件包提供了指导。