最简单的C ++库,支持分布式消息传递 - Observer Pattern

时间:2015-01-03 03:52:01

标签: c++11 asynchronous boost signals distributed

我需要做一些比较简单的事情,而且我真的不想像RabittMQ那样安装MOM等。

  1. 有几个程序"注册"中央     "服务"服务器通过TCP。服务器的唯一功能是     当他们反过来说时,回叫所有注册的客户     " DONE&#34 ;.所以它是一种"加入" (编辑:屏障)用于分布式客户端进程。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

https://github.com/actor-framework

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

此外,习惯了库强制执行的语法(习惯了lambdas!),如果不习惯使用最先进的c ++ 11程序,那么起初它可能有点令人费解。然后,记住在服务器上注册的所有客户端的琐碎是唯一的另一个警告。

强烈推荐。