【问题标题】:Spring amqp with RabbitMq: Message is not circled back to live queue after falling off dead letter queue带有 RabbitMq 的 Spring amqp:消息在从死信队列中掉出后未循环回活动队列
【发布时间】:2014-12-24 17:25:31
【问题描述】:

我正在努力实现this。有很多相互矛盾的答案要知道它是否可能。

根据之前的链接,这是不可能的。但是在这个论坛的另一个问题中,有人评论说他们可以here和评论部分here

那么,是否可以做实时队列 => 死信队列 => 实时队列

或者我是否需要使用特定版本的 RabbitMq 来实现这一点?

我能做到:活队列 => 死信队列 和死信队列 => 实时队列。

【问题讨论】:

    标签: rabbitmq spring-amqp spring-rabbit


    【解决方案1】:

    如果来自alive 的死信到期 - 根据文档...

    可以形成死信队列的循环。例如,当队列死信消息发送到默认交换时,可能会发生这种情况而没有指定死信路由键。在这样的周期中的消息(即两次到达同一队列的消息)如果整个周期是由于消息到期而被丢弃

    (我的重点)。

    我刚刚进行了一个测试,其中来自alive 的死信是由于拒绝而导致的,它工作得很好;几个周期后,x-death 标头看起来像这样...

    reason: rejected
    queue:  alive
    time:   1419448981
    exchange:   req
    routing-keys:   alive
    
    reason: expired
    queue:  dead
    time:   1419448981
    exchange:   dlx
    routing-keys:   alive
    
    reason: rejected
    queue:  alive
    time:   1419448976
    exchange:   req
    routing-keys:   alive
    
    reason: expired
    queue:  dead
    time:   1419448976
    exchange:   dlx
    routing-keys:   alive
    
    ...
    

    为了测试这一点,我强制 Spring AMQP 侦听器失败并将defaultRequeueRejected 设置为false

    【讨论】:

    • 谢谢加里。确实是到期了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多