RabbitMQ死莱特队列从不持久

RabbitMQ死莱特队列从不持久,rabbitmq,dead-letter,Rabbitmq,Dead Letter,有没有办法确保当您NACK消息并将其发送到死信交换/队列时,该消息将是持久的?默认情况下,即使原始消息通过SetPersistent(true)设置为persistent,死信消息也不会跟随套件。RabbitMQ不会修改死信消息的属性,过期消息除外: 如果消息是在deliver_mode=2的情况下发布的,则应将其作为持久性发布到死信队列中是否有理由不将整个死信队列设置为持久性?这是一个选项吗?到目前为止,我只发现可以在消息级别设置持久性。因为rabbit处理死信发布,所以我找不到方法让它在Ba

有没有办法确保当您NACK消息并将其发送到死信交换/队列时,该消息将是持久的?默认情况下,即使原始消息通过SetPersistent(true)设置为persistent,死信消息也不会跟随套件。

RabbitMQ不会修改死信消息的属性,过期消息除外:


如果消息是在deliver_mode=2的情况下发布的,则应将其作为持久性发布到死信队列中

是否有理由不将整个死信队列设置为持久性?这是一个选项吗?到目前为止,我只发现可以在消息级别设置持久性。因为rabbit处理死信发布,所以我找不到方法让它在BasicProperties(delivery_mode=2)中设置持久性位。是的,可以使整个队列持久化。兔子使用的术语是“耐用的”。这意味着队列将在兔子和/或服务器关闭的情况下生存。不完全是这样,持久性仅适用于队列配置;不是里面的信息。如果在服务重新启动或崩溃时添加没有传递模式=2(或.net客户端中的SetPersistent(true))的消息,则队列中的所有消息都将丢失。我已经证实了这种行为。问题是rabbit不会以与原始消息相同的持久性来编写死信消息。因此,重新启动服务将删除死队列中的所有消息。如果消息标记为持久性,而DLQ标记为持久性,则应该持久化消息。使用RabbitMQ 3.5进行测试