在我目前的项目中,我有一个稍微分布式的架构,即几个可执行文件相互协作以完成任务。为了方便起见,我希望我能拥有一个可靠的“骨干”消息总线:当一个可执行文件连接到msg总线时,它可以在新的msg到达时接收回调。同样,它可以向总线发布新消息。
我知道有些公司会提供这样的现成解决方案,但是,OSS中有免费的解决方案吗?
答案 0 :(得分:4)
如果您不需要Windows支持,并且您的流程不会分布在不同的计算机上,我肯定会给D-Bus看一下。
它是用C语言编写的(根据网页)绑定“Qt,GLib,Java,C#,Python等”。
list of projects using D-Bus也令人印象深刻。
答案 1 :(得分:3)
您是否考虑过使用基于RabbitMQ的AMQP?
C
binding有一些库可以为C ++“装扮”。
RabbitMQ是一个完整而高度的 可靠的企业邮件系统 基于新兴的AMQP 标准。它是根据该许可证授予的 开源Mozilla公共许可证和 具有平台中立的分布, 加上特定于平台的包和 捆绑,便于安装。
当然,如果你需要“分布较少”的东西,你可以直接使用DBus。
答案 2 :(得分:1)
除了给定的答案,Boost.Interprocess应该是一种便携且高效的替代方案 如果您真的在寻找高性能,那么也不要使用IPC库进行进程内通信 - 这将会导致性能下降。
答案 3 :(得分:0)
与上面的AMQP想法类似,您可能希望查看ZeroMQ(http://www.zeromq.org/)。我没有亲自使用它,但我知道那些喜欢它的人。