snapsuzun / yii2-sqs
Yii2 Amazon SQS 监视器扩展,用于处理来自 SQS 队列的消息
dev-master
2019-02-21 09:31 UTC
Requires
- php: >=7.1
- ext-json: *
- aws/aws-sdk-php: ^3.0@dev
- symfony/process: *
- yiisoft/yii2: ~2.0.13
Suggests
- ext-pcntl: *
- ext-shmop: *
This package is auto-updated.
Last update: 2024-09-21 21:58:19 UTC
README
一个用于接收和处理 Amazon SQS 消息的扩展。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令:
php composer.phar require --prefer-dist snapsuzun/yii2-sqs
或者在您的 composer.json
文件的 require 部分添加:
"snapsuzun/yii2-sqs": "dev-master"
配置
要使用此扩展,只需在您的应用程序配置中添加以下代码
return [ 'bootstrap' => ['sqsWatcher'] //.... 'components' => [ 'sqsClient' => function () { return new \snapsuzun\sqs\SqsClient([ 'cridentials => [ 'key' => 'Api key of Amazon AWS', 'secret' => 'Secret key of Amazon AWS' ], 'region' => 'Region of Amazon SQS', 'version' => 'latest', 'accountId' => 'ID of account in Amazon AWS', 'queueNameAliases' => [ 'aliasForQueue' => 'Real name of queue in Amazon SQS', 'test_queue' => 'TestQueue.fifo' ] ]); }, 'sqsWatcher' => [ 'class' => '\snapsuzun\sqs\watcher\Watcher', 'queueName' => 'queue', 'handler' => function (array $messages, array &$receiptHandlers, \snapsuzun\sqs\SqsClient $client) { // handle messages } ], ], ];
消息处理器
从 SQS 队列处理消息可以通过回调函数或实现 \snapsuzun\sqs\watcher\HandlerInterface
的对象来完成。
实现 \snapsuzun\sqs\watcher\HandlerInterface
的对象示例
class ExampleHandler implements \snapsuzun\sqs\watcher\HandlerInterface { public $db = 'db'; /** * @param array $messages * @param array $receiptHandlers * @param \snapsuzun\sqs\SqsClient $client */ public function handleMessages(array $messages, array &$receiptHandlers, \snapsuzun\sqs\SqsClient $client) { // handle messages } }
使用 ExampleHandler
return [ //....... 'components' => [ 'sqsWatcher' => [ //..... 'handler' => ExampleHandler::class ] ] ];
或者
return [ //....... 'components' => [ 'sqsWatcher' => [ //..... 'handler' => [ 'class' => ExampleHandler::class, 'db' => 'db2' ] ] ] ];
在处理消息时,您可以从中移除 receipt 处理器 $receiptHandlers,这样消息就不会从 SQS 队列中删除。
控制台命令
要监听队列,可以使用以下命令:
./yii sqs-watcher/listen --isolate=1
如果您只想处理队列中的消息而不想等待新消息,可以使用以下命令:
./yii sqs-watcher/run --isolate=1
选项 isolate
可以为每批消息创建一个子进程。