知道为什么 AWS Lambda 函数无法使用 amqp 协议向 RabbitMQ 发布消息吗?
(我正在使用 node.js 运行时和 Node amqplib 运行时)
当使用本地计算机上的代码时,消息将在目标队列上发布和接收。 当在 Lambda 中运行相同的代码时,一切似乎都在运行,包括从 Channel.publish 返回真实的响应,但消息不会出现在 Exchange 上
我尝试添加延迟,以防 Lambda 终止得太快
还有其他想法吗? Lambda 会阻止协议还是我很蠢?
我必须在配置了 NAT 网关的 VPC 子网中启动我的子网。我没有深入研究它,但我怀疑您的网络连接选项否则会受到限制。
这是一篇旧文章,但我最近遇到了这个问题,并且能够通过等待通道事件缓冲区耗尽来解决它。
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。