热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

zmqxsub/xpub实现消息订阅(一)

xpubxsub官网的解释是增强了pubsub模式,并且支持双向消息收发。经过阅读其源码,发现xpubxsub不仅仅是增强了pubsub,

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 socketsZMQ_PUBZMQ_XPUB
DirectionUnidirectional
Send/receive patternReceive messages, send subscriptions
Incoming routing strategyFair-queued
Outgoing routing strategyN/A
Action in mute stateDrop

做个简单的解释: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

实例代码后面再上传


推荐阅读
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 本文介绍了几种常用的图像相似度对比方法,包括直方图方法、图像模板匹配、PSNR峰值信噪比、SSIM结构相似性和感知哈希算法。每种方法都有其优缺点,适用于不同的应用场景。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文深入解析了 Kubernetes 控制平面(特别是 API 服务器)与集群节点之间的通信机制,并对其通信路径进行了详细分类。旨在帮助用户更好地理解和定制其安装配置,从而增强网络安全性,确保集群的稳定运行。 ... [详细]
author-avatar
我财我乐汽车869
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有