zeromq学习,第一章

Asynchronous Input/Output(AIO):AIO可以在input/output的请求到来之前继续执行。AIO在实时应用程序中是必须的。使用AIO可以映射多个任务到一个线程上去。
首先zeromq的设计是弱中间人的(brokerless,相对于ActiveMQ、RabbitMQ等,使用0zq的程序就可以直接和其他的节点通信而不通过broker的代理。),zeromq不会存储信息到磁盘上,然而可能使用本地的交换文件来存储消息(当设置了zmq.SWAP时)。

示例:HelloWorld(server)

server

示例:Helloworld(client)

client

这里使用了最基本的请求应答架构。详细解析代码:
第一步:创建了context和socket,zmq_ctx_new方法创建了一个新的context,这是线程安全的,即一个context可用于多个线程操作。 zmq_socket方法创建了一个在context中定义的socket,ZeroMQ的socket不是线程安全。传统的socket是同步的,然而ZMQ的socket在客户端和服务端都维护了一个队列来管理request-reply的异步模式。ZMQ自动的处理连接、重连、断开连接和内容交付。
服务端创建了Reply(ZMQ_REP)用来处理接收消息并应答消息。如果客户端和服务端遗失(lost),应答的消息将在没有任何通知的情况下丢掉。
客户端创建了一个Request(ZMQ_REQ)来发送消息并接收来自服务的应答。ZMQ_REQ下不会丢弃任何信息,不管是没有没有可用与发送消息的服务或是服务处于忙状态,所有的发送操作zmq_send函数会阻塞,直到一个服务变为可用于发送消息。ZMQ_REQ和ZMQ_REP、ZMQ_ROUTER类型兼容。
消息的发送zmq_send函数的第三个参数是flags,是ZMQ_DONTWAIT或ZMQ_SNDMORE。ZMQ_DONTWAIT表明消息是异步的发送。ZMQ_SNDMORE表明消息有多部分,其余的部分已经“在路上了”。消息接收函数zmq_msg_recv函数,如服务端,在先前接收的消息是无效的。第三个参数flugs可能是ZMQ_DONTWAIT。

先睡觉了

posted on 2014-03-16 23:41 Hallelujah 阅读(3657) 评论(2)  编辑 收藏 引用 所属分类: C++学习网络zeromq

评论

# re: zeromq学习,第一章[未登录] 2015-01-12 21:51 dd

11  回复  更多评论   

# re: zeromq学习,第一章 2015-07-02 10:12 hg

fjh  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2013年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(1)

随笔分类(15)

随笔档案(14)

最新随笔

搜索

最新随笔

最新评论

阅读排行榜

评论排行榜