支持分布式消息传递的最简单的 C++ 库 - 观察者模式

Simplest C++ library that supports distributed messaging - Observer Pattern

我需要做一些相对简单的事情,我不太想安装RabittMQ等MOM

  1. 有几个程序 "register" "service" 服务器通过 TCP。服务器的唯一功能是 当所有注册客户依次说 "DONE"。所以它是分布式客户端进程的一种"join"(编辑:屏障)。

  2. 当所有客户端都说"DONE"(它们可以在完全不同的时间完成)时,中央服务器消息 他们都说 "ALL-COMPLETE"。客户端 "block" 直到异步回调。

所以这是一种分布式异步观察者模式。服务器必须以某种方式跟踪客户端的位置。客户端可以将其 IP 地址传递给服务器等。它可以用 Boost::Signal、BOOST::Asio、BOOST::Dataflow 等东西构造,但我不想重新发明wheel 如果简单的东西已经存在。我与 ZeroMQ 非常接近,但是他们的模式中没有一个很好地支持这个用例,AFAIK。

有没有一个非常简单的系统可以做到这一点?请注意,服务器可以用任何语言编写。我只需要客户端的 C++ 绑定。

经过多方搜索,我使用了这个库

https://github.com/actor-framework

事实证明,使用此框架执行此操作相对简单。使用它的唯一真正 "impediment" 是该库最近似乎进行了 API 转换,并且文档 .pdf 文件没有完全赶上源代码。没什么大不了的,因为示例程序和源 (.hpp) 文件可以帮助您克服这个困难。但是,他们需要使文档与源同步。此外,IMO 他们需要提供更多关于如何使用 c++ Actors 实现极致性能的有趣示例。对于我的情况,不需要它,但是这个用例中的参与者(无共享)的想法是人们在使用线程时使用它而不是共享内存通信的原因之一。

此外,习惯库强制执行的语法(习惯 lambdas!)如果不习惯最先进的 c++11 程序,一开始可能会有点令人费解.然后,记住所有注册到服务器的客户端的琐碎是唯一的其他警告。

强烈推荐。