我有一个订阅了Azure服务总线主题的服务。我的服务在Kubernetes中的多个Pod上运行。理想情况下,当主题上有消息时,一个示例应该选择它并处理它。但是有几次多个示例收到相同的消息。可能是什么原因?
ax6ht2ek1#
通常有以下几种罪魁祸首:1.通过LockDuration检查处理时间是否超过订阅上设置的最大时间。如果是这种情况,您将丢失消息上的锁,而其他示例会拾取它。这是竞争消费者模式的正常行为。1.请确保您的总处理时间不超过5分钟(目前是服务总线的最大时间)。如果是这种情况,您的代码应该发出请求以延长锁定持续时间,或者如果您使用的是SDK提供的ServiceBusProcessor,则配置处理器来执行此操作。1.确保所有示例都从同一订阅接收。如果每个示例都有自己的订阅,则会有多个重复的消息。
LockDuration
ServiceBusProcessor
1条答案
按热度按时间ax6ht2ek1#
通常有以下几种罪魁祸首:
1.通过
LockDuration
检查处理时间是否超过订阅上设置的最大时间。如果是这种情况,您将丢失消息上的锁,而其他示例会拾取它。这是竞争消费者模式的正常行为。1.请确保您的总处理时间不超过5分钟(目前是服务总线的最大时间)。如果是这种情况,您的代码应该发出请求以延长锁定持续时间,或者如果您使用的是SDK提供的
ServiceBusProcessor
,则配置处理器来执行此操作。1.确保所有示例都从同一订阅接收。如果每个示例都有自己的订阅,则会有多个重复的消息。