xf_said

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

    因为公司有需求,对程序模块之间通信效率有较高的需求。之前公司用的通信组件是ActiveMQ,根据网上公布的测试结果显示其效率比较低, 后来考虑准备在新的项目中开始使用ZeroMQ。看了几天发现用起来比较简单,但是不知道怎么用进我们的项目中,加之项目比较着急就搁浅了,转而选择了与socketAPI相近的boost库中的Asio库,因为本人比较菜,最近测试发现了各种坑!!!各种坑!!!(对Asio不熟悉的童鞋对新项目慎用)

    然后最近就又开始看ZeroMQ,发现网上demo程序不少,但是解释清楚的很少,所以在这里记录测试记录,并督促自己有始有终。官网上有很好的demo程序,我就不贴出来了,要注意的是,demo都是最新的Linux版本的,所以源码最好也是下载最新的,windows上编译需要稍微改动。

    ZeroMQ推崇模式编程,第一种请求应答没什么说的。第二种PUB-SUB模式中,服务端没什么,对客户端的配置接口有疑问:

    int zmq_setsockopt (void *s, int option, const void *optval, size_t optvallen);

    参数一:socket句柄;

    参数二:socket的模式,这里因为是客户端,所以是订阅模式:ZMQ_SUBSCRIBE;

    参数三:订阅关键字;

    参数四:参数三的长度;

对于参数三,官方文档:



该接口必须显示调用,否则为不订阅,测试结果:
char *filter = (argc > 1) ? argv[1] : "";
rc = zmq_setsockopt(subscriber, ZMQ_SUBSCRIBE, filter, strlen(filter));
不过滤,会订阅所有信息;

如果
filter = “test ”;
则订阅以“test ”为开头的信息,中间出现关键字的信息不会接收到,(!!测试中,对于关键字中的空格“ ”,linux完全匹配,windows下不同环境测试结果不一致,待验证);

到这里PUB-SUB模式在一对多的情景中,可以使用了。
posted on 2016-11-04 01:10  xf_said  阅读(3373)  评论(0编辑  收藏  举报