欢迎访问Ningto's博客

Menu
  • 首页
  • 归档
  • 关于
  • 书签
  • 必应壁纸
  • IT聚合
  • 工具
    • 我的工具列表
    • 我的网盘
    • 必应每日壁纸API
    • Html转Markdown
    • 仙尘光标
Menu

ZMQ DEMO push pull 模式

最后更新 2021-05-26 16:37:32   阅读量 978

类似如生产者消费者模式,多个消费者可以均衡的消费所有生产出来的东西,比如有100个任务,只有一个消费者它需要消费100次,如果有10个消费者那么每个消费者只需要消费10次,大大提高了效率。

注意:当没有消费者时,生产者是不会生产的(send被阻塞)

生产者代码:

#include "zmq.hpp"
#include <string>
#include <iostream>
#include <algorithm>

int main()
{
    zmq::context_t context(1);
    zmq::socket_t socket(context, zmq::socket_type::push);
    socket.bind("tcp://127.0.0.1:7733");
    
    int number = 0;
    while (1) {
        try {
            std::string str = std::to_string(++number);
            socket.send(zmq::const_buffer(str.c_str(), str.size()));
            std::cout << "push:" << str << std::endl;
            zmq_sleep(1);
        } catch (zmq::error_t &e) {
            std::cerr << "error:" << e.what() << std::endl;
            break;
        }
    }

}

消费者代码:

#include <iostream>
#include <zmq.hpp>

int main()
{
    zmq::context_t context(1);
    zmq::socket_t socket(context, zmq::socket_type::pull);
    
    try {
        socket.connect("tcp://127.0.0.1:7733");
        while (1) {
            zmq::message_t recv_msg;
            socket.recv(recv_msg);
            std::cout << "pull:" << recv_msg.to_string() << std::endl;
        }
    } catch (zmq::error_t e) {
        std::cout << e.what() << std::endl;
    }

    system("pause");
    return 0;
}
(转载本站文章请注明作者和出处:泞途 - ningto.com)

下一篇 – ZMQ DEMO 发布订阅模式
上一篇 – ZMQ DEMO send_multipart方法的使用

  1. MQ

toningto@outlook.com

推荐文章

Effective Python

Python的几种函数参数类型

标签云

Mac React Database Qt Node.js Javascript Product C/C++ Python Bug Tools Windows Linux Tips Design Go IOS MongoDB Shell Android Mobile Life Java Web MQ Others Boost

推广链接

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元

多谢支持,用了好几年,服务很稳定支持多设备!

其他

文章RSS

Copyright © 2016 Welcome To Ningto Blog | 鄂ICP备17003086号-2