2017-09-27 138 views
1

我有一个WebJob从服务总线获取消息正在工作正常。如果Webjob无法完成或抛出异常,则消息将发送回队列中,这本身就很好。Azure WebJob服务总线重新排队队列出现错误

我已经将MaxDequeueCount设置为10,如果在某些情况下失败,它将不会再出现问题,因为它会尝试再次处理它。但问题是,消息似乎被发送到队列的底部,并且在我们回到第一个失败的消息之前处理其他消息。

我想每次处理一条消息,因为我可能会在同一个实体中连续进行多个更新。如果订单发生变化,它会以错误的顺序更新实体。

是否可以在错误时将队列发送回队列中,或者继续处理相同的消息,直到达到MaxDequeueCount?

回答

0

理想情况下,您不应该依赖消息顺序。

根据您的要求,您可能会使用Azure服务总线Sessions的FIFO语义。当在会话中处理消息并且消息是中止时,它将被再次处理,而不是进入队列末尾。你需要记住以下几点:

  1. 只能在一个时间
  2. 处理一个消息需要会话中使用
  3. 如果消息没有完成不会中止,它会留下挂在队列中,当会话重新启动时将被拾取。
相关问题