我们正在使用azure服务总线来帮助通过工作人员监听队列来并行处理消息。
首先收到一条聚合消息,然后将此消息拆分为数千条通过请求 - 响应模式发布的单个消息,因为我们需要知道所有消息何时完成才能运行单独的进程。
我们的问题是请求 - 响应方法有一个超时,导致以下问题:
假设我们发布了1000条要处理的消息,并且只有一个工作人员在监听。超时到期后留在队列中的消息将被丢弃,这是我们不想要的。如果我们将到期时间设置为一个较大的值,以保证所有消息都将被处理,那么我们就会冒着消息失败的风险,并且必须等待超时才能理解出现了问题。
有没有办法动态更改请求 - 响应方案中的单个邮件的到期时间或我们应该考虑的任何其他模式?
谢谢!
答案 0 :(得分:0)
你弄错了,天蓝色服务总线消息的生存时间https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.timetolive.aspx如果消息被消耗,消息将在队列中出现的时间。
这不是超时,如果你发布一个有更长时间的消息,消息会在队列中停留很长时间,但是如果你没有消费,你应警告另一端你没有消耗这个信息。
您可以使用另一个队列执行此操作,并将另一条消息放在另一个队列中,并显示失败的消息ID和错误。
这是一个异步过程,因此您不应该基于此处持有请求,而是处理问题的异步性质。