我在Azure服务总线中设置了一个队列,消息TTL为5秒(这是不是太短了?)我注意到它会在活动状态下停留超过5秒)。
在它过期后,我希望它被转发到另一个队列进行处理(超时队列)。我已经将ForwardDeadLetteredMessagesTo属性设置为超时队列的名称,但是当消息在原始队列上过期时,它只是进入原始队列--死信队列,而不是进入超时队列。
我是不是误解了这是怎么回事?
我的用例是,我有一些消费者只在一天中的某些时候监听主队列。如果没有侦听主队列,我希望它过期并被推送到超时队列。超时队列总是有一个使用者,因此它应该接收该消息并正确地处理它。我可以有多个主队列,所以我希望让所有的主队列将过期的消息转发到超时队列,这样我就不必为每个主队列的死信队列设置一个使用者。
发布于 2018-05-31 11:35:03
这种情况听起来是合理的。仅用死信自动转发设置DefaultMessageTimeToLive
和/或Message.TimeToLive
是不够的。你得先把那些过期的信息写成死信。为此,您还需要设置EnableDeadLetteringOnMessageExpiration
才能使场景正常工作。
我注意到它会在活动状态下停留超过5秒)。
这很正常。对于要从队列中删除过期消息,必须有一个活动侦听器。因此,如果您有许多过期的消息,并且没有一个使用者试图接收未过期的消息,请注意不要淹没您的队列。
https://stackoverflow.com/questions/50627031
复制相似问题