我有一个WebJob从服务总线获取消息,工作正常。如果webjob无法完成或抛出异常,则消息将在队列中发回,这本身就很好。
我已将MaxDequeueCount设置为10,如果在某些情况下失败则不会出现问题,因为它会尝试再次处理它。但问题是消息似乎被发送到队列的底部,并且在我们返回到第一个失败的消息之前处理其他消息。
我想一次处理一条消息,因为我可能会对连续出现的同一个实体进行多次更新。如果订单发生变化,它将以错误的顺序更新实体。
是否可以在出错时将消息发送回队列的正面或继续处理同一消息,直到我们到达MaxDequeueCount?
答案 0 :(得分:0)
理想情况下,您不应该依赖邮件订单。
根据您的要求,您可能会使用Azure Service Bus Sessions的FIFO语义。当在会话中处理消息并且消息中止时,将再次处理该消息而不是到达队列的末尾。你需要记住以下几点: