【发布时间】:2021-11-25 13:56:00
【问题描述】:
我有几个使用 RabbitMQ 作为消息代理的 .Net 5.0 微服务。现在我正在切换到 AWS SQS。很少有服务正在监听相同的消息(这是通过 RabbitMQ 中的 Exchange 完成的)。在 AWS 中,这可以通过将 SQS 队列订阅到 SNS 主题来实现。我创建了 SNS fifo 主题和 SQS fifo 队列,将这些队列订阅到主题。当我将消息直接发布到队列时,一切都会立即运行,但是当我将消息发布到 SNS 主题时,需要 7 分钟以上才能从订阅主题的队列中获取消息。有没有人注意到如此巨大的延迟?也许是延迟? 顺便说一句,所有服务都在同一区域的 aws 上运行。 有任何想法吗 ?将不胜感激任何建议!
【问题讨论】:
-
你如何衡量这个延迟?您确定这是第一次处理消息吗?可能出了点问题,它被重新发送,而您只看到最新的时间戳。
-
感谢@Maurice 的留言!用定时器测量。一种侦听器服务非常简单,只需接收消息并将其存储在数据库中即可。日志级别是信息,所以我看到了所有日志,并且我确信消息处理没有错误。
-
典型的延迟通常以几十毫秒为单位,而不是秒。更短的时间。
-
@DavidBrabant 可以交付延迟参数导致此暂停吗?
-
通常您根本不会设置交付延迟,或者如果您关心这种延迟,请将其设置为
0。该设置告诉亚马逊“我想将此消息存储在队列中,但要等到稍后再进行处理”
标签: c# .net amazon-web-services amazon-sqs amazon-sns