码迷,mamicode.com
首页 > 其他好文 > 详细

ZeroMQ简单介绍

时间:2018-06-24 00:49:49      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:destory   进程   在线   顺序   自动   传递   proc   信号量   容器   

ZeroMQ中的字符串是指定长度的,也就是不会向C语言中一样,使用0作为最后的字符串的表示。因此,当接受字符串数据的时候是纯净的字符串数据,需要你自己处理字符串结尾的工作。

ZeroMQ应用程序总是创建一个上下文开始,然后用它来创建套接字。应该在进程中只创建并使用一个上下文。上下文是单个进程中所有套接字的容器,并充当了inproc套接字的传输工具。

在主代码开始执行一个zmq_ctx_new(),在代码最后执行一个zmq_ctx_destory()。如果套接字没有关闭,则zmq_ctx_destory函数将一直挂起,即使关闭了所有的套接字,如果有悬而未决的连接或者发送,zmq_ctx_destory也将等待下去,除非你在关闭这些套接字之前将linger设置为0.

消息对象 套接字 上下文共同组成了ZeroMQ对象。 处理完消息的那一刻,总是用zmq_msg_close()关闭它。

当你退出程序的时候,关闭你的套接字,然后调用zmq_ctx_destory()销毁上下文。

不要在多线程中使用同一个套接字,记住不要这样做。

关闭每个有持续请求的套接字 首先设置一个低的linger值,然后关闭套接字。

最后是销毁上下文,这将导致连接到的线程的阻塞的接受或者是发送都将返回一个错误,捕获该错误,然后在该线程中设置linger,关闭套接字并退出,不要多次销毁同样的上下文,在主线程中的zmq_ctx_destory调用将会保持阻塞,直到它直到的所有套接字都已经安全的关闭了。

ZeroMQ的特点

在后台线程异步处理IO,这些线程使用无锁数据结构与应用程序线程进行通讯,所以并发应用程序不需要锁,信号量,

组件可以动态的来去自如,而zeromq会自动的重新连接,这意味着你可以在任何顺序启动组件,可以SOA 面向服务的架构,其中的服务可以在任何时间加入和离开网络。

自动对消息排队。

有一个处理队列过满的方法,当队列满的时候,会自动阻止发件人或者丢弃消息,这取决于你是哪一种模式(这两种模式就是TCP和UDP)

可以让应用程序通过任何的传输协议来互相交流,这些协议可以是TCP、多播、进程内,进程间

它使用依赖消息传递模式的不同策略,安全的处理速度满,阻塞的读取者。

可以采用多种模式,请求应答,发布订阅来将消息路由,

可以创建代理来排队、转发、或者通过一个调用来捕获消息。

使用在线路上原封不动的帧来传递整个消息。如果你写了10K的消息数据,你讲获得10K的消息数据

不对消息加强任何格式,是二进制对象,

可以智能的处理网络错误,有时候会重试。

可以减少能源的消耗,等等等等

 

ZeroMQ简单介绍

标签:destory   进程   在线   顺序   自动   传递   proc   信号量   容器   

原文地址:https://www.cnblogs.com/randyniu/p/9219142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!