micronative / sns
Message Queue Amazon SNS Transport (fork and improve from enqueue/sns)
2.0.1
2022-04-24 09:51 UTC
Requires
- php: ^7.1.3
- aws/aws-sdk-php: ~3.26
- enqueue/dsn: ^0.9
- queue-interop/queue-interop: ^0.7|^0.8
Requires (Dev)
- enqueue/test: 0.9.x-dev
- phpunit/phpunit: ~5.4.0
- queue-interop/queue-spec: ^0.6
README
Configuration
"require": { "micronative/sns": "^2.0.0" }, "repositories": [ { "type": "vcs", "url": "https://github.com/micronative/sns" } ],
Run
composer require micronative/sns:2.0.0
Description
This project was forked from enqueue/sns and made the following improvements:
- Move all classes to src
- Rename Tests to tests
- Move examples to tests
- Change namespace to Micronative\Sns
SnsProducer->send():
public function send(Destination $destination, Message $message): void { InvalidDestinationException::assertDestinationInstanceOf($destination, SnsDestination::class); InvalidMessageException::assertMessageInstanceOf($message, SnsMessage::class); $body = $message->getBody(); if (empty($body)) { throw new InvalidMessageException('The message body must be a non-empty string.'); } $topicArn = $this->context->getTopicArn($destination); $arguments = [ 'Message' => $message->getBody(), 'TopicArn' => $topicArn, ]; if ($message->getProperties()) { foreach ($message->getProperties() as $name => $value) { $arguments['MessageAttributes'][$name] = ['DataType' => 'String', 'StringValue' => $value]; } } if ($message->getMessageAttributes()) { foreach ($message->getMessageAttributes() as $name => $value) { $arguments['MessageAttributes'][$name] = ['DataType' => 'String', 'StringValue' => $value['StringValue]]; } } if (null !== ($structure = $message->getMessageStructure())) { $arguments['MessageStructure'] = $structure; } if (null !== ($phone = $message->getPhoneNumber())) { $arguments['PhoneNumber'] = $phone; } if (null !== ($subject = $message->getSubject())) { $arguments['Subject'] = $subject; } if (null !== ($targetArn = $message->getTargetArn())) { $arguments['TargetArn'] = $targetArn; } $result = $this->context->getSnsClient()->publish($arguments); if (false == $result->hasKey('MessageId')) { throw new \RuntimeException('Message was not sent'); } $message->setSnsMessageId((string) $result->get('MessageId')); }