快速,高效的处理间消息传递

时间:2010-11-21 23:37:57

标签: c# .net msmq

我正在研究一个由一系列数据转换组件组成的系统。在将对象传递给链中的下一个组件之前,这些组件中的每一个都对对象执行非常简单的任务。这些组件中的每一个都作为Windows服务运行。我以这种方式设计了系统,以改善维护并有助于未来的可扩展性。

目前,我正在使用消息队列在组件之间传递这些对象,但这很快成为一个问题。可能有数十种服务不断地从消息队列中读取和写入消息队列。据我所知,所有消息都被序列化并写入磁盘,在我的系统中,吞吐量非常快,看起来非常浪费。

是否还有其他已建立的系统可用于进程间通信,以避免连续磁盘读写的开销?

感谢。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

如果您不需要保证可靠或事务性消息传递,则应通过将Message.Recoverable属性设置为System.Messaging,可以在false中显着提高性能。顺便提一下,默认情况下这已经是假的,因此假设原始解决方案确实使用MSMQ,您对磁盘使用的假设可能不正确。

  

类型:System.Boolean

     

如果保证传递消息,则为true(通过在en时将消息保存到磁盘)   路线);如果交货不确定,则为假。默认值为false。

最佳解决方案取决于您的服务要求。您可能可以使用它,或者您可能需要一些极低延迟的服务总线(通常是商业产品),或者您自己构建之间的某种东西。

答案 2 :(得分:1)

ZeroMQ是仅内存消息队列实现。

相关问题