【发布时间】:2013-07-17 04:11:06
【问题描述】:
对这两个术语有点困惑,我在想拥有持久消息但瞬态(非持久)队列的目的是什么? 毕竟,如果代理重新启动并且队列未恢复,则恢复的消息将被浪费。
【问题讨论】:
对这两个术语有点困惑,我在想拥有持久消息但瞬态(非持久)队列的目的是什么? 毕竟,如果代理重新启动并且队列未恢复,则恢复的消息将被浪费。
【问题讨论】:
您可以拥有持久队列但“致命”消息,因此在代理重新启动后,您仍然可以拥有队列,但它将是空的,反之亦然,但是您很伤心,是的,您将丢失队列中的所有消息。
在你提供的消息持久化选项的组合中确实没用但不会导致错误。
但是如果你绑定alternate exchange 来交换你正在发布消息并且它是持久的,重启后,如果你没有声明临时队列,你可以将消息路由到它。
例子:
假设我们有这样的组合和正确绑定的队列,Q*1 接收消息M*1 和Q*2 - M*2。
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qm1/transient][Qm2/transient] [Qax1/durable][Qax2/durable]
让我们发布消息[Mt1/transient]和`[Md1/durable],我们会得到这样的情况:
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qm1/transient][Qm2/transient] [Qax1/durable][Qax2/durable]
[Mt1/transient]
[Md1/durable]
重启后会得到
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qax1/durable][Qax2/durable]
让我们再次发布两条消息,[Mt1/transient] 和 `[Md1/durable]:
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qax1/durable][Qax2/durable]
[Mt1/transient]
[Md1/durable]
所以,再次重启代理:
[ Exchange-main/durable ] + [Exchange-alternate/durable]
[Qax1/durable][Qax2/durable]
[Md1/durable]
【讨论】: