zoukankan      html  css  js  c++  java
  • zeromq学习记录(七)订阅发布消息封装

    之前也有提到 使用订阅发布 pub sub模式必须要显示定义ZMQ_SUBSCRIBE

    只有以此模式定义的过滤字节开头的消息才会被订阅者收到

    如果想收到所有信息

    可定义subscriber.setsockopt(ZMQ_SUBSCRIBE, "", 0); 此类过滤器

    示例很简单 我将示例代码发布者与订阅者整合到一个工程中 开启两个线程演示

    上代码

    // psenvpubsub.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "zhelpers.hpp"
    #include <thread>
    
    void PubFunc()
    {
        zmq::context_t context(1);
        zmq::socket_t publisher(context, ZMQ_PUB);
        publisher.bind("tcp://*:5563");
    
        while (1) {
            //  Write two messages, each with an envelope and content
            s_sendmore(publisher, "A");
            s_send(publisher, "We don't want to see this");
            s_sendmore(publisher, "B");
            s_send(publisher, "We would like to see this");
            Sleep(1000);
        }
        return;
    }
    
    void SubFunc()
    {
        zmq::context_t context(1);
        zmq::socket_t subscriber(context, ZMQ_SUB);
        subscriber.connect("tcp://localhost:5563");
        subscriber.setsockopt(ZMQ_SUBSCRIBE, "B", 1);
    
        while (1) {
    
            //  Read envelope with address
            std::string address = s_recv(subscriber);
            //  Read message contents
            std::string contents = s_recv(subscriber);
    
            std::cout << "[" << address << "] " << contents << std::endl;
        }
    }
    
    int main()
    {
        //开启两个线程  一个发 一个收
        // 用于演示发布者的封包发送及订阅者的过滤使用
    
        std::thread threadPub = std::thread(PubFunc);
        std::thread threadSub = std::thread(SubFunc);
    
        threadPub.join();
        threadSub.join();
    
        return 0;
    }
    View Code

  • 相关阅读:
    Zabbix实现企业微信(WeChat)告警
    Zabbix使用腾讯企业邮箱发送警报邮件,在微信查看警报邮件
    centos7安装pip
    zabbix源码安装3.4.11客户端和yum安装4.2.1客户端
    zabbix中文乱码解决
    centos7配置阿里yum源替换centos自带的yum源(其他镜像yum源配置相似)
    CentOS7.5下Redis5.0.5安装与配置
    LVS+Keepalived搭建高可用负载均衡
    centos7配置双ip(内外网均可访问)
    NSMutableAttributedString 的使用
  • 原文地址:https://www.cnblogs.com/itdef/p/5349782.html
Copyright © 2011-2022 走看看