我需要做一些比较简单的事情,而且我真的不想像RabittMQ那样安装MOM等。
有几个程序"注册"中央 "服务"服务器通过TCP。服务器的唯一功能是 当他们反过来说时,回叫所有注册的客户 " DONE&#34 ;.所以它是一种"加入" (编辑:屏障)用于分布式客户端进程。
当所有客户说" DONE" (它们可以在完全不同的时间完成),中央服务器消息 他们都说'#34; ALL-COMPLETE"。客户"阻止"直到异步回叫。
所以这是一种分布式异步观察者模式。服务器必须以某种方式跟踪客户端的位置。客户端可以将其IP地址传递给服务器等。它可以使用Boost :: Signal,BOOST :: Asio,BOOST :: Dataflow等构建,但我不想重新发明轮子如果已经存在简单的事情。我与ZeroMQ非常接近,但他们的模式没有很好地支持这个用例,AFAIK。
有一个非常简单的系统吗?请注意,服务器可以用任何语言编写。我只需要为客户端提供C ++绑定。
答案 0 :(得分:1)
经过多次搜索,我使用了这个库
https://github.com/actor-framework
事实证明,使用此框架执行此操作相对简单。使用它的唯一真正“障碍”是库最近似乎已经进行了API转换,文档.pdf文件还没有完全赶上源代码。没有大问题,因为示例程序和源(.hpp)文件可以帮助您解决这个问题。但是,他们需要使文档与源同步。此外,IMO需要提供更多有趣的示例,说明如何使用c ++ Actors实现极致性能。对于我的情况,它不是必需的,但在这个用例中使用actor(无共享)的想法是人们在使用线程时使用它而不是共享内存通信的原因之一。
此外,习惯了库强制执行的语法(习惯了lambdas!),如果不习惯使用最先进的c ++ 11程序,那么起初它可能有点令人费解。然后,记住在服务器上注册的所有客户端的琐碎是唯一的另一个警告。
强烈推荐。