ndthuan / aws-sqs-wrapper
简化SQS队列消息处理的库
v1.1.0
2018-11-25 10:23 UTC
Requires
- php: ^7.0
- ext-json: *
- aws/aws-sdk-php: ^3.71
- psr/log: ^1.0
Requires (Dev)
- monolog/monolog: ^1.24
- phpunit/php-code-coverage: ^5.3
- phpunit/phpunit: ^6.5.13
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2024-09-27 02:04:10 UTC
README
PHP库,用于简化SQS队列消息处理。
简介
- 此库将发送/接收/删除SQS消息的结果转换为对象。这样,您可以在不记住常见属性名称的情况下利用代码自动完成功能。
- 它通过引入简化的发送/接收/删除方法来删除您的样板代码。
- 它解耦了发布和订阅的责任,使得您的业务逻辑不受基础设施感知的约束。
安装
composer require ndthuan/aws-sqs-wrapper
用法
发送消息
use Aws\Sqs\SqsClient; use Ndthuan\AwsSqsWrapper\Publishing\Publisher; use Ndthuan\AwsSqsWrapper\Queue\Connector; $queueUrl = ''; // get this from your own AWS SQS setup // creating a publisher $sqsClient = new SqsClient(...); $queueConnector = new Connector($sqsClient, $queueUrl); $publisher = new Publisher($queueConnector); // send a string message $publisher->publishString('My message body'); // or send a json serializable object/array $myMessage = [ 'my' => 'data', ]; $publisher->publishJsonSerializable($myMessage);
订阅队列
use Aws\Sqs\SqsClient; use Ndthuan\AwsSqsWrapper\Queue\Connector; use Ndthuan\AwsSqsWrapper\Queue\ReceivedMessage; use Ndthuan\AwsSqsWrapper\Queue\ResultMetadata; use Ndthuan\AwsSqsWrapper\Subscribing\DelegatorSubscriber; // defining a message processor class MyMessageProcessor implements MessageProcessorInterface { /** * @inheritdoc */ public function processMessage(ReceivedMessage $message, ResultMetadata $resultMetadata) { // your processing logic } } $queueUrl = ''; // get this from your own AWS SQS setup // creating a subscriber $sqsClient = new SqsClient(...); $queueConnector = new Connector($sqsClient, $queueUrl); $subscriber = new DelegatorSubscriber(new MyMessageProcessor(), $queueConnector); // run the subscriber $subscriber->pullAndProcessMessages();
异常处理
消息处理器可能抛出异常或错误。订阅者将根据异常类型的不同而做出不同的反应
- 在
LogicException
和ValidationFailureException
上:对应的消息将从队列中删除,并且订阅者继续处理其他消息。 - 在
FatalException
上:对应的消息不会从队列中删除,但订阅者将停止处理并将异常向上传递。 - 在其他的
\Throwable
类型上:对应的消息不会从队列中删除,并且订阅者继续处理其他消息。