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_PUBZMQ_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 实现消息订阅(一)相关推荐

  1. 深入biztalk消息以及消息订阅发布路由机制(二)-消息订阅【转】

    一.消息订阅 订阅消息的主体叫订阅服务器,订阅服务器是可以订阅并消费消息的服务,可以作为订阅服务器的服务类型目前有四类,在BizTalkMgmtDb管理数据库中的adm_ServiceClass的Na ...

  2. c# 使用线程方式实现消息订阅

    在下程序的时候,经常会碰到这样一种情况: 定义的变量会影响多个控件的数值,当变量有变化的时候,需要更新多个控件,这多个控件可能会在不同的界面中,管理起来非常麻烦,这个时候就要用到消息订阅,下面是详细的 ...

  3. .NetCore Cap 结合 RabbitMQ 实现消息订阅

    开源分布式消息框架 Cap 可以在GitHub上拉也可以通过nuget添加 上一篇博文写了 Windows RabbitMQ的安装使用 Cap支持事务,通过捕获数据库上下文连接对象实现 消息事务,消息 ...

  4. Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)

    前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于SignalR Core的文章了. 先介绍一下SignalR吧,如下: ASP.NET S ...

  5. react 消息订阅-发布机制(解决兄弟组件通信问题)

    消息订阅-发布机制 工具库: PubSubJS 下载: npm install pubsub-js --save 使用: 1)import PubSub from 'pubsub-js' //引入 2 ...

  6. 如何订阅MQTT服务器历史消息,MQTT协议之消息订阅

    序 在MQTT协议中,最重要的就是发布/订阅,下面重点分析下消息订阅. SUBSCRIBE 一般来讲,客户端在成功建立TCP连接之后,发送CONNECT消息,在得到服务器端授权允许建立彼此连接的CON ...

  7. 和push的区别_RocketMQ的消息订阅push和pull的区别

    RocketMQ消息订阅有两种模式: 一种是Push模式,即MQServer主动向消费端推送: 另外一种是Pull模式,即消费端在需要时,主动到MQServer拉取. 但在具体实现时,Push和Pul ...

  8. ROS学习笔记13(测试一个简单的消息发布和消息订阅)

    文章目录 1 运行消息发布 2 运行消息订阅 1 运行消息发布 $ roscore # In your catkin workspace $ cd ~/catkin_ws $ source ./dev ...

  9. ROS学习笔记12(用Python写一个简单的消息发布和消息订阅)

    文章目录 1 写一个消息发布节点 2 写一个消息订阅节点 3 构建节点 1 写一个消息发布节点 $ roscd beginner_tutorials $ mkdir scripts $ cd scri ...

  10. ROS学习笔记11(用C++写一个简单的消息发布和消息订阅)

    文章目录 1 写一个消息发布节点 2 写一个消息订阅节点 3 构建节点 1 写一个消息发布节点 首先切换到工作目录: roscd beginner_tutorials 接着,创建src/talker. ...

最新文章

  1. 乱码 转ios_王者荣耀:无法转区怎么办?3分钟教你解决检测异常,iOS也有艾琳了!...
  2. 大二发SCI!这位985大学学霸,获MIT博士全奖!
  3. PHP获取重定向URL的几种方法
  4. Activity与多个fragment的之间的相爱想杀
  5. 学完java后学编译原理_一个资深程序员对Java初学者的学习思维路线建议
  6. 【mysql的编程专题⑥】视图
  7. keycloak 调研资料
  8. 如何在网页中插入Flv视频文件
  9. 优化 Azure 成本,实现财务目标
  10. 每个开发者都应该懂一点单元测试
  11. wincc怎么做数据库_wincc 数据库
  12. vs怎么把文字超链接_怎么拥有自己设计的简单个人网站(超细节)
  13. 最简单的WIN7内核PE系统的U盘安装方法+WIN7密码破解
  14. Java实习生的一天
  15. mac android usb驱动 win10,macbook安装Win10后无法创建引导的USB驱动器解决方法
  16. 双向迁移图协同过滤GCF的跨域推荐
  17. BIG-ENDIAN VS LITTLE-ENDIAN
  18. 百度地图绘制大量标注点卡顿问题完美解决
  19. 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈及QQ自定义分享--微信分享
  20. 《C++沉思录》学习笔记1

热门文章

  1. 搜狗推送工具-搜狗批量提交软件
  2. 同时使用动态库和静态库时怎么写makefile
  3. 基于 CIM 的智慧园区框架
  4. 纯CSS下拉导航代码
  5. Google - 搜索图片快速设置
  6. 路飞学城python电子书闲鱼_路飞学城-python开发集训-第一章之用户登录作业
  7. 路飞学城Python-Day78
  8. 张朝阳5G寻路与搜狐奇兵
  9. 【张朝阳的物理课笔记】9. 瑞丽金斯公式的推导(下),普朗克修正,黑体辐射公式
  10. SAR、PAR和DAR