![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Zeromq
文章平均质量分 61
吓人的猿
专注Linux系统开发,网络编程,服务后台开发
展开
-
ZeroMQ学习 (一)认识与安装
关于ZMQ1 简单介绍 ZMQ(ØMQ、ZeroMQ, 0MQ)看起来像是一套嵌入式的网络链接库,但工作起来更像是一个并发式的框架。它提供的套接字可以在多种协议中传输消息,如线程间、进程间、TCP、广播等。你可以使用套接字构建多对多的连接模式,如扇出、发布-订阅、任务分发、请求-应答等。ZMQ的快速足以胜任集群应用产品。它的异步I/O机制让你能够构建多核应用程序,完成异步消息处理任务。ZMQ有着...原创 2018-03-04 11:20:12 · 1632 阅读 · 0 评论 -
ZeroMQ学习 (九)zmq_poll使用
11 zmq_poll使用 每一个zmq的套接字也可以认为是一路IO,那么在多路IO读写的时候,我们可以使用zmq_poll进行IO复用,使用了zmq_poll()函数,当收到了消息的第一帧时,其它帧其实也已经收到了。订阅者代码如下:#include <zmq.h>#include <stdio.h>#include <unistd.h>#inclu...原创 2018-03-04 11:26:36 · 6640 阅读 · 1 评论 -
ZeroMQ学习 (八)PAIR-PAIR
10 PAIR-PAIR 线程间通信的时候,最好使用,PAIR-PAIR模式进行通信。你可以让信号发送方使用PUSH,接收方使用PULL,这看上去可能可以,但是需要注意的是,PUSH套接字发送消息时会进行负载均衡,如果你不小心开启了两个接收方,就会“丢失”一半的信号。而PAIR套接字建立的是一对一的连接,具有排他性。可以让发送方使用DEALER,接收方使用ROUTER。但是,ROUTER套接字会...原创 2018-03-04 11:25:48 · 3443 阅读 · 0 评论 -
ZeroMQ学习 (七) 多帧消息
9 多帧消息 ZMQ消息可以包含多个帧,这在实际应用中非常常见. 多帧消息的每一帧都是一个zmq_msg结构,也就是说,当你在收发含有五个帧的消息时,你需要处理五个zmq_msg结构。你可以将这些帧放入一个数据结构中,或者直接一个个地处理它们。下面的代码演示如何发送多帧消息:zmq_msg_send (&message, socket, ZMQ_SNDMORE);...zmq_ms...原创 2018-03-04 11:25:05 · 2523 阅读 · 0 评论 -
ZeroMQ学习 (六) 信号中断的处理
8 信号中断的处理 现实环境中,当应用程序收到Ctrl-C或其他诸如ETERM的信号时需要能够正确地清理和退出。默认情况下,这一信号会杀掉进程,意味着尚未发送的消息就此丢失,文件不能被正确地关闭等。 在C语言中我们是这样处理消息的:interrupt: Handling Ctrl-C cleanly in C发布者代码://// Shows how to handle Ctrl-C//...原创 2018-03-04 11:24:23 · 1444 阅读 · 0 评论 -
ZeroMQ学习 (五)发布-订阅模式
7 发布-订阅模式 发布者不用管是否有订阅者,它只管不停的发布,也不用接受客户端的请求。多订阅者可以尝试链接发布者,来接受信息,但是不能往发布者发送请求。发布者源码:#include <zmq.h>#include <stdio.h>#include <unistd.h>#include <string.h>int main (void)...原创 2018-03-04 11:23:34 · 1545 阅读 · 0 评论 -
ZeroMQ学习 (四)请求-应答模式
6 请求-应答模式 请求-应答模式,REQ-REP必须同步的进行,即,REQ套接字必须先发送请求,然后等待应答;REP必须先接受请求,然后发送应答。一旦打乱这个顺序,将造成错误,套接字将无法继续工作。请求端源码request.cpp:#include <zmq.h>#include <stdio.h>#include <unistd.h>#inclu...原创 2018-03-04 11:22:59 · 2161 阅读 · 0 评论 -
ZeroMQ学习 (三)核心消息模式
4 核心消息模式 ZMQ会自动进行连接或重连;无论是发送消息还是接收消息,ZMQ都会先将消息放入队列中,并保证进程不会因为内存溢出而崩溃,适时地将消息写入磁盘;ZMQ会处理套接字异常;所有的I/O操作都在后台进行;ZMQ不会产生死锁。ZMQ的核心消息模式有:请求-应答模式 将一组服务端和一组客户端相连,用于远程过程调用或任务分发。发布-订阅模式 将一组发布者和一组订阅者相连,用于数据分发。管道模...原创 2018-03-04 11:22:00 · 1029 阅读 · 0 评论 -
ZeroMQ学习 (二) ZMQ与传统的TCP区别
3 ZMQ与传统的TCP区别 在连接两个节点时,其中一个需要使用zmq_bind(),另一个则使用zmq_connect()。通常来讲,使用zmq_bind()连接的节点称之为服务端,它有着一个较为固定的网络地址;使用zmq_connect()连接的节点称为客户端,其地址不固定。我们会有这样的说法:绑定套接字至端点;连接套接字至端点。端点指的是某个广为周知网络地址。 ZMQ连接和传统的TCP连...原创 2018-03-04 11:21:07 · 6265 阅读 · 0 评论 -
ZeroMQ学习 (十)ROUTER-DEALER
ROUTER-DEALER ZMQ_ROUTER类型的套接字是请求/回复模式的一种升级。 当ZMQ_ROUTER收到一个消息的时候,会自动在消息前面添加一帧,这一帧用来识别发送端的地址。 当发送一个消息的时候,需要先发送一帧对端的地址,然后再发送消息,如果目的地址指向的对端不存在了,这个消息就会被丢弃。 对端的地址默认情况下由ZMQ来产生一个唯一标识UUID。 ROUTER源码://...原创 2018-03-04 11:27:41 · 4857 阅读 · 1 评论