MassTransit w / RabbitMQ - 宣布持久交换?

时间:2014-02-28 21:30:04

标签: masstransit

默认情况下,MassTransit似乎正在使用瞬态交换。我看到这里的DeclareExchange和BindQueue方法都有一个持久的开关:

https://github.com/phatboyg/MassTransit/blob/217d51b9d6ea19d5b01904dcceb7bacd399ace67/src/Transports/MassTransit.Transports.RabbitMq/RabbitMqConnection.cs

我希望这会有点简单......类似于EasyNetQ,你可以访问高级总线属性,切换持久标志,你就完成了......

然而,我并不是要在总线配置中找到实际访问RabbitMqConnection对象的位置,并调用这些方法。

有人碰巧有一个如何使用DeclareExchange方法的例子吗?

更新:默认行为实际上是持久的。问题是由于取消订阅。

1 个答案:

答案 0 :(得分:3)

默认情况下,所有交换和队列都是持久的,包括交换之间的任何绑定。

唯一的非持久性交换是那些必须发布私有类事件的交换,这些交换被声明为临时交换,以避免在连接关闭后使用一堆内部/私有类名称和绑定来混淆虚拟主机。

唯一的另一种方法是地址URI包括:

?temporary=true

在这种情况下,它会将其声明为临时的。这通常在临时消费者需要临时队列/交换/绑定时使用,一旦退出该过程就会消失。