我打算为我的一个应用程序使用here描述的以队列为中心的设计。这基本上包括使用Azure队列,其中工作请求从UI排队。工作人员从队列中读取,处理并删除队列中的消息。
'工作'由工作人员在一个事务中完成,因此如果工作人员在完成之前失败,则在重新启动时它会再次拾取相同的消息(因为它没有从队列中删除)并尝试再次执行操作(最多为重试)
缩放我可以使用两种方法:
想知道第一种方法是否正确?在上面的第二种方法中,处理故障的有效方法是什么?
答案 0 :(得分:2)
你最好采取方法2 - 单个队列,但有多个工作人员。
这更好,因为:
如果您担心visibility
,您最初可以选择默认timespan
,然后如果工作人员看起来花了太长时间,它可以定期致电UpdateMessage()进行更新消息的可见性。
最后,如果您的工作人员超时并且未能完成对该消息的处理,则其他工作人员将再次接收该消息以再次尝试。您还可以使用消息的DequeueCount属性来管理重试次数。