默认情况下,MassTransit似乎正在使用瞬态交换。我看到这里的DeclareExchange和BindQueue方法都有一个持久的开关:
我希望这会有点简单......类似于EasyNetQ,你可以访问高级总线属性,切换持久标志,你就完成了......
然而,我并不是要在总线配置中找到实际访问RabbitMqConnection对象的位置,并调用这些方法。
有人碰巧有一个如何使用DeclareExchange方法的例子吗?
更新:默认行为实际上是持久的。问题是由于取消订阅。
答案 0 :(得分:3)
默认情况下,所有交换和队列都是持久的,包括交换之间的任何绑定。
唯一的非持久性交换是那些必须发布私有类事件的交换,这些交换被声明为临时交换,以避免在连接关闭后使用一堆内部/私有类名称和绑定来混淆虚拟主机。
唯一的另一种方法是地址URI包括:
?temporary=true
在这种情况下,它会将其声明为临时的。这通常在临时消费者需要临时队列/交换/绑定时使用,一旦退出该过程就会消失。