msmq队列必须是事务性的吗?

时间:2013-10-31 09:38:48

标签: msmq rebus

我刚刚开始使用Rebus,并注意到它总是会创建事务性的msmq队列,导致硬盘流量很大(0,5 - 5mb / sec)。这是故意的 - 可以做些什么来避免它吗?

2 个答案:

答案 0 :(得分:2)

正确地观察到Rebus(具有其默认的MsmqMessageQueue传输)始终创建事务性MSMQ队列。它也将拒绝使用非事务性输入队列,如果您自己创建了非事务性队列并尝试使用它,则在启动时抛出错误。

这是因为Rebus的理念围绕着消息是重要数据的想法,与SQL Server中的数据或您正在使用的数据库一样重要。

是的,MSMQ实现持久性的方式是在发送消息时将消息写入磁盘,这可能解释了您所看到的磁盘活动。

如果您对系统如何处理其消息有不同的看法,那么没有什么可以阻止您用可以与非事务性MSMQ一起使用的东西替换Rebus的传输。但请记住,如果您这样做,Rebus的所有交付保证将无效;)

答案 1 :(得分:2)

我们有同样的观察,令人讨厌的方面是,即使队列中没有消息,我们也在磁盘上写入300/500 KB /秒。似乎只有队列中的轮询才会导致磁盘上的持续写入。

吉安玛丽亚。