我正在研究一个由一系列数据转换组件组成的系统。在将对象传递给链中的下一个组件之前,这些组件中的每一个都对对象执行非常简单的任务。这些组件中的每一个都作为Windows服务运行。我以这种方式设计了系统,以改善维护并有助于未来的可扩展性。
目前,我正在使用消息队列在组件之间传递这些对象,但这很快成为一个问题。可能有数十种服务不断地从消息队列中读取和写入消息队列。据我所知,所有消息都被序列化并写入磁盘,在我的系统中,吞吐量非常快,看起来非常浪费。
是否还有其他已建立的系统可用于进程间通信,以避免连续磁盘读写的开销?
感谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
如果您不需要保证可靠或事务性消息传递,则应通过将Message.Recoverable属性设置为System.Messaging
,可以在false
中显着提高性能。顺便提一下,默认情况下这已经是假的,因此假设原始解决方案确实使用MSMQ,您对磁盘使用的假设可能不正确。
类型:System.Boolean
如果保证传递消息,则为true(通过在en时将消息保存到磁盘) 路线);如果交货不确定,则为假。默认值为false。
最佳解决方案取决于您的服务要求。您可能可以使用它,或者您可能需要一些极低延迟的服务总线(通常是商业产品),或者您自己构建之间的某种东西。
答案 2 :(得分:1)
ZeroMQ是仅内存消息队列实现。