zmq以及c/cpp for zmq
来源:互联网 发布:java 状态机 编辑:程序博客网 时间:2024/05/19 05:37
zmq的库的资料太过丰富。为了不误人子弟,还是将诸位引导到最权威的zmq作者的项目主页吧。自行github,不送。
我只说明一点,zmq的作者后面用c语言重写了zmq,新的库叫nanomsg。
相比zmq(2.0),nanomsg有不少优势,其一,sub/pub过滤是在pub方处理,zmq是sub方过滤(减少流量)。其二,nanomsg用的epoll。
如果业务非常确定只涉及C/C++以及python,则可以放心采用nanomsg,否则,不用考虑,选ZMQ是不二只选。
ZMQ 的官方sample有一些bug,特别是兼容C++ 11的时候,官方的一些写法是编译不过的。
例如ZMQ的代理相关的例子,MQ的代理。
//// Simple message queuing broker in C++// Same as request-reply broker but using QUEUE device//// Olivier Chamoux <olivier.chamoux@fr.thalesgroup.com>#include "zhelpers.hpp"int main (int argc, char *argv[]){ zmq::context_t context(1); // Socket facing clients zmq::socket_t frontend (context, ZMQ_ROUTER); frontend.bind("tcp://*:5559"); // Socket facing services zmq::socket_t backend (context, ZMQ_DEALER); backend.bind("tcp://*:5560"); // Start the proxy zmq::proxy(frontend, backend, nullptr); //error return 0;}上述代码在C++ 98标准中可以编译通过(代码作者声明的说法),C++ 11中则会报错。
转去看看看报错的行的
inline void proxy (void *frontend, void *backend, void *capture) { int rc = zmq_proxy (frontend, backend, capture); if (rc != 0) throw error_t (); }我们看看zmq_proxy的定义
ZMQ_EXPORT int zmq_proxy (void *frontend, void *backend, void *capture);
接受的是指针类型,传入类的对象实际上是不妥的,严格一点的编译检查,纵使是C++ 98标准按道理也是不能编译通过的。
另外需要注意的是,别看到接收的是指针就试图通过取地址做参数,强制转换编译通不过。
int rc = zmq_proxy (&frontend, &backend, capture); //error
https://github.com/nanomsg/nanomsg
nanomsg的几种常见模式如下官方文档,十分推荐,这是分布式消息的精华。很想转载这篇博客。。还是忍住了。
http://tim.dysinger.net/posts/2013-09-16-getting-started-with-nanomsg.html
0 0
- zmq以及c/cpp for zmq
- ZMQ
- ZMQ
- ZMQ
- cpp bind zmq
- zmq的安装以及调试
- Ubuntu中安装ZMQ以及pyzmq
- zmq源码阅读——Msg.hpp & Msg.cpp 的 相关操作 (zmq中的消息)
- zmq封装
- ZMQ简介
- php-zmq
- Zmq封装
- ZMQ简介
- zmq学习
- ZMQ guider
- ZMQ研究
- ZMQ是什么?
- ZMQ: 基本原理
- Unity shader编写教程(一)
- 五大常用算法:分治、动态规划、贪心、回溯和分支界定
- 南京到汊河 01iqh3lf
- Unity3D学习之_AI人工智能(坦克模型自动寻怪_自动追击)
- 癫痫病怎样诊断 01ir3wlq
- zmq以及c/cpp for zmq
- [3D理论] 【Unity Shaders】Transparency —— 使用alpha通道创建透
- 视频格式详解
- 图解Android - Zygote, System Server 启动分析 .
- SQL示例
- 地宫寻宝
- unity学习之Unity3D 脚本常用方法快速参考
- 【Qt5开发及实例】22、文件浏览器
- easyui datagrid 导出excel