Azure Service Bus转发死信消息转发

时间:2018-05-31 14:46:02

标签: azure azureservicebus azure-servicebus-queues

我在Azure Service Bus中有一个队列设置,消息TTL为5秒(这太短了吗?我注意到它将保持活动状态超过5秒)。

过期后,我希望将其转发到另一个队列进行处理(超时队列)。我已将ForwardDeadLetteredMessagesTo属性设置为超时队列的名称,但是当消息在原始队列上到期时,它只会进入原始队列死信队列而不是进入超时队列。

我是否误解了这应该如何运作?

我的用例是我有一些消费者只在一天中的某些时间收听主要队列。如果没有任何东西正在侦听主队列,我希望它过期并被推送到超时队列。超时队列总是有一个消费者,因此它应该接收该消息并正确处理它。我可以有多个主队列,所以我想让所有主队列将过期的消息转发到超时队列,这样我就不必为每个主队列的死信队列都有一个消费者。

1 个答案:

答案 0 :(得分:0)

情景听起来很合理。使用死信自动转发设置DefaultMessageTimeToLive和/或Message.TimeToLive是不够的。实际上你必须先将那些过期的消息写入死信。为此,您还需要设置EnableDeadLetteringOnMessageExpiration以使该方案有效。

  

我注意到它会保持活动状态的时间超过5秒。)

这是正常的。对于要从​​队列中删除的过期消息,必须有一个活动的侦听器。因此,如果有许多消息过期且没有一个消费者尝试接收未过期的消息,请注意不要过度流动队列。