情景:
如果我分离出多个线程的多个辅助角色或一个辅助角色,它会轮询Azure队列中的新消息。
有人可以确认这是否是正确的设计方法?我想拥有许多工作者角色的原因是为了加速PROCESSJOB。我们的应用程序应该接近实时,即只要有消息我们应该得到,应用复杂的业务规则并提交到AZURE DB。我们期待每3分钟收到11,000条消息。
谢谢。
答案 0 :(得分:17)
您可以拥有任意数量的队列阅读器。扩展工作者角色实例是很常见的,因为它们都可以从同一队列中读取,从而为您提供更高的工作吞吐量。
当您读取队列消息时,它会在一段时间内被标记为“不可见”,以防止其他人阅读和执行相同的工作。消息的所有者必须在时间段到期之前将其删除,否则消息将再次可见,并且当原始阅读器尝试删除消息时将抛出异常。这意味着您的操作必须是幂等的。
没有直接的毒药消息处理,但它很容易实现,因为每条消息都有一个出队计数。只需检查一遍,并在阅读3-4次后删除有毒信息。您还可以根据出队计数动态调整超时时间,因为由于时间窗口太短,处理可能会失败。
以下是DequeueCount
的{{3}}。