从 AWS Lambda 发送 RabbitMQ 消息

问题描述 投票:0回答:2

知道为什么 AWS Lambda 函数无法使用 amqp 协议向 RabbitMQ 发布消息吗?

(我正在使用 node.js 运行时和 Node amqplib 运行时)

当使用本地计算机上的代码时,消息将在目标队列上发布和接收。 当在 Lambda 中运行相同的代码时,一切似乎都在运行,包括从 Channel.publish 返回真实的响应,但消息不会出现在 Exchange 上

我尝试添加延迟,以防 Lambda 终止得太快

还有其他想法吗? Lambda 会阻止协议还是我很蠢?

amazon-web-services lambda rabbitmq
2个回答
0
投票

我必须在配置了 NAT 网关的 VPC 子网中启动我的子网。我没有深入研究它,但我怀疑您的网络连接选项否则会受到限制。


0
投票

这是一篇旧文章,但我最近遇到了这个问题,并且能够通过等待通道事件缓冲区耗尽来解决它。

channel.publish
返回
boolean
,例如...

const messageSent = myChannel.publish('foo'exchange','routing-key', Buffer.from("my message"));

 if (!messageSent) {
  await new Promise((resolve) => myChannel.once('drain', () => resolve));
}

当缓冲区完全耗尽时,显然会引发

drain
事件。完成此操作后,消息开始成功发布到 RabbitMQ。

© www.soinside.com 2019 - 2024. All rights reserved.