目标是能够使用 AWS SQS+SNS 发送消息。这几天一直在挣扎,我不知道如何使它工作。
Symfony 4.2 有一个新组件,我想使用的 messenger。它应该与 php-enqueue 作为第三方传输一起使用。我正在使用它连接到 AWS SQS+SNS。
我找不到任何将它们放在一起的文档。我看到了 php-enqueue 如何连接到 AWS,但是文档在代码中显示了配置,而不是在配置 yaml 或 .env 文件中。这是一个问题,因为我希望 Messenger/enqueue 处理幕后的事情。
我能够让 Symfony Messenger 在没有本地同步消息的 php-enqueue 的情况下工作。但在那之后......显然我做得不对。我希望有人可能有这个配置的样板。
这就是我所在的地方。我只是想使用 SQS 发送消息。我收到一个错误:
Error executing "GetQueueUrl" on "https://sqs.us-west-2.amazonaws.com";
AWS HTTP error: Client error: `POST https://sqs.us-west-2.amazonaws.com`
resulted in a `400 Bad Request`
我在 enqueue.yaml 文件中尝试了许多键的排列,但没有做对。我用它来寻求帮助,但无法让它工作。https://enqueue.readthedocs.io/en/stable/bundle/config_reference/
->> 编辑:我发现您可以将主题和队列名称添加到 DSN。我不再收到错误并创建了一个主题,但队列没有。现在,消息总线正在工作,但在本地同步。没有消息发送到 AWS。
这些是我安装的 Composer 库。我确信有太多了,但我一直在努力让它发挥作用。
"aws/aws-sdk-php": "^3.19",
"enqueue/amqp-lib": "^0.9.8",
"enqueue/enqueue-bundle": "^0.9.8",
"enqueue/messenger-adapter": "^0.2.2",
"enqueue/snsqs": "^0.9.0",
"guzzlehttp/guzzle": "^6.0",
"symfony/amqp-pack": "^1.0",
"symfony/messenger": "4.2.*",
这是我的 messenger.yaml
framework:
messenger:
transports:
amqp: 'enqueue://default?topic[name]=testQ&queue[name]=testQ'
routing:
# Route your messages to the transports
'App\Message\SmsMessage': amqp
这是 enqueue.yaml
enqueue:
default:
transport:
dsn: '%env(resolve:ENQUEUE_DSN)%'
client:~
这是 .env 中的条目
###> enqueue/enqueue-bundle ###
ENQUEUE_DSN=snsqs::?key={key}&secret={secret}®ion=us-west-2
###< enqueue/enqueue-bundle ###
这是控制器中发送消息的代码:
public function index(MessageBusInterface $messageBus) {
$message = new SmsMessage('This is so cool');
$messageBus->dispatch($message);
...
}