zmq xsub/xpub 实现消息订阅(一)
xpub/xsub官网的解释是增强了pub/sub模式,并且支持双向消息收发。经过阅读其源码,发现xpub/xsub不仅仅是增强了pub/sub,还有些许改动,如:在xsub类型的socket上不能设置subscribe选项:zmq_setsocket(socket,ZMQ_SUBSCRIBE,0x01);
会报不支持的错误,那么,xsub类型的socket到底该如何达到订阅消息的目的呢?
1、官网的:https://rfc.zeromq.org/spec/29/ 竟然没有解释。。。。有点神操作了
2、http://api.zeromq.org/3-2%3azmq-socket#toc12 的ZMQ_XSUB有说明,如下(不翻译了):
Same as ZMQ_SUB except that you subscribe by sending subscription messages to the socket. Subscription message is a byte 1 (for subscriptions) or byte 0 (for unsubscriptions) followed by the subscription body.
Summary of ZMQ_XSUB characteristics | |
---|---|
Compatible peer sockets | ZMQ_PUB, ZMQ_XPUB |
Direction | Unidirectional |
Send/receive pattern | Receive messages, send subscriptions |
Incoming routing strategy | Fair-queued |
Outgoing routing strategy | N/A |
Action in mute state | Drop |
做个简单的解释:ZMQ_XSUB通过发送订阅消息来订阅topic——以1开 头的消息是订阅,以0开头的消息是取消订阅;
如:1、发送1"md.sse",则表示订阅md.sse这个topic
2、发送1"md",则表示订阅md这个topic
3、发送1则表示订阅所有的消息,默认不订阅消息,所以会接收不到。。。。
#1"md"没有写错,可以建一个buf,把1和topic写到buf中,再发送;如:
std::string msg(1,0x1);
msg.append("md.sse");
xsub_socket.send(msg); #订阅了md.ssetopic #这里使用的是zmqpp库,直接使用libzmq也是类似的
解释以下:
58行:从输入的topics中查找有没有,,如果有,则说明包含了多个topic,
60行:以逗号为分割符分割topic,并存储在topic中,
65行:订阅topic
70行:订阅topic
实例代码后面再上传
zmq xsub/xpub 实现消息订阅(一)相关推荐
- 深入biztalk消息以及消息订阅发布路由机制(二)-消息订阅【转】
一.消息订阅 订阅消息的主体叫订阅服务器,订阅服务器是可以订阅并消费消息的服务,可以作为订阅服务器的服务类型目前有四类,在BizTalkMgmtDb管理数据库中的adm_ServiceClass的Na ...
- c# 使用线程方式实现消息订阅
在下程序的时候,经常会碰到这样一种情况: 定义的变量会影响多个控件的数值,当变量有变化的时候,需要更新多个控件,这多个控件可能会在不同的界面中,管理起来非常麻烦,这个时候就要用到消息订阅,下面是详细的 ...
- .NetCore Cap 结合 RabbitMQ 实现消息订阅
开源分布式消息框架 Cap 可以在GitHub上拉也可以通过nuget添加 上一篇博文写了 Windows RabbitMQ的安装使用 Cap支持事务,通过捕获数据库上下文连接对象实现 消息事务,消息 ...
- Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)
前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于SignalR Core的文章了. 先介绍一下SignalR吧,如下: ASP.NET S ...
- react 消息订阅-发布机制(解决兄弟组件通信问题)
消息订阅-发布机制 工具库: PubSubJS 下载: npm install pubsub-js --save 使用: 1)import PubSub from 'pubsub-js' //引入 2 ...
- 如何订阅MQTT服务器历史消息,MQTT协议之消息订阅
序 在MQTT协议中,最重要的就是发布/订阅,下面重点分析下消息订阅. SUBSCRIBE 一般来讲,客户端在成功建立TCP连接之后,发送CONNECT消息,在得到服务器端授权允许建立彼此连接的CON ...
- 和push的区别_RocketMQ的消息订阅push和pull的区别
RocketMQ消息订阅有两种模式: 一种是Push模式,即MQServer主动向消费端推送: 另外一种是Pull模式,即消费端在需要时,主动到MQServer拉取. 但在具体实现时,Push和Pul ...
- ROS学习笔记13(测试一个简单的消息发布和消息订阅)
文章目录 1 运行消息发布 2 运行消息订阅 1 运行消息发布 $ roscore # In your catkin workspace $ cd ~/catkin_ws $ source ./dev ...
- ROS学习笔记12(用Python写一个简单的消息发布和消息订阅)
文章目录 1 写一个消息发布节点 2 写一个消息订阅节点 3 构建节点 1 写一个消息发布节点 $ roscd beginner_tutorials $ mkdir scripts $ cd scri ...
- ROS学习笔记11(用C++写一个简单的消息发布和消息订阅)
文章目录 1 写一个消息发布节点 2 写一个消息订阅节点 3 构建节点 1 写一个消息发布节点 首先切换到工作目录: roscd beginner_tutorials 接着,创建src/talker. ...
最新文章
- 乱码 转ios_王者荣耀:无法转区怎么办?3分钟教你解决检测异常,iOS也有艾琳了!...
- 大二发SCI!这位985大学学霸,获MIT博士全奖!
- PHP获取重定向URL的几种方法
- Activity与多个fragment的之间的相爱想杀
- 学完java后学编译原理_一个资深程序员对Java初学者的学习思维路线建议
- 【mysql的编程专题⑥】视图
- keycloak 调研资料
- 如何在网页中插入Flv视频文件
- 优化 Azure 成本,实现财务目标
- 每个开发者都应该懂一点单元测试
- wincc怎么做数据库_wincc 数据库
- vs怎么把文字超链接_怎么拥有自己设计的简单个人网站(超细节)
- 最简单的WIN7内核PE系统的U盘安装方法+WIN7密码破解
- Java实习生的一天
- mac android usb驱动 win10,macbook安装Win10后无法创建引导的USB驱动器解决方法
- 双向迁移图协同过滤GCF的跨域推荐
- BIG-ENDIAN VS LITTLE-ENDIAN
- 百度地图绘制大量标注点卡顿问题完美解决
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈及QQ自定义分享--微信分享
- 《C++沉思录》学习笔记1