ZeroMQ接口API解读(1) zmq_socket()
来源:互联网 发布:淘宝鹊桥怎么玩 编辑:程序博客网 时间:2024/06/03 07:38
zmq_socket()
描述
本函数返回一个void*类型的句柄,用于引用这个socket,type参数则决定了该socket上消息队列的类型。
新建的socket是未绑定的,要使socket能够通讯,必须调用zmq_connect()与另一个端点建立连接或者调用zmq_bind()使其能够接受来自其它端点的连接。
传统的网络socket代表同步接口,而zmq socket则代表异步消息队列接口。网络socket传输子节流或数据报,zmq socket传输消息。
zmq的异步含义是连接建立和销毁,消息传输的时序都是由zmq自己完成的,与用户无关。如果对方无法接收,则发送端会将消息排序放入队列,而不是丢弃。
传统socket只允许一对一或多对一,但zmq socket允许发起多个连接,也允许多个端点连接自己,从而可以建立多对多的关系。
socket类型
socket类型是按照消息通讯模式来划分的。
请求-响应模式
本模式用于一个客户端向某个服务的一个或多个实例发起请求,并接收来自服务器的对每个请求的响应。
ZMQ_REQ
ZMQ_REQsocket用于客户端向服务器发送请求和接收来自服务的答复。此套接字类型,只允许一个zmq_send(请求)和随后zmq_recv(答复)的交替调用。如果有多个服务实例,则每个客户端请求发送和多个服务实例之间用轮转调度,每个收到的答复与最近发出的请求匹配。
当ZMQ_REQ socket连接的所有服务实例都进入高水位状态,或者当前没有服务实例可用,那么这个socket就进入异常状态,这个socket上所有的zmq_send()操作将会阻塞(放入队列但是不发送),直到异常状态结束或有可用的服务实例。消息不会被丢弃。
ZMQ_REP
ZMQ_REP socket是服务实例用于从客户端接收请求和向客户端发送响应的。这种socket类型只允许zmq_recv()和zmq_send()交替调用。每个接受到的请求是按照所有客户端内公平原则排队的。每个响应都会发送给最近一个发起请求的客户端。如果原始的请求客户端不存在,那么响应被丢弃。当ZMQ_REP socket由于客户端的高水位原因进入异常状态时,所有发送到客户端的响应都会被丢弃,直到异常结束。
ZMQ_DEALER
本类型的socket是一种用于扩展请求/响应模式的高级模式。每个消息按照round-robine方式发送,按照fair-queue方式接收。当所有客户端都进入高水位状态或不存在客户端时,本socket进入异常状态。这时本socket上的任何zmq_send()调用都将阻塞,直到异常情况结束。消息不会丢弃。
When a ZMQ_DEALER socket is connected to a ZMQ_REP socket each message sent must consist of an empty message part, thedelimiter, followed by one or more body parts.
当一个ZMQ_DEALER socket连接到一个ZMQ_REP socket时,每个发送的消息都必须由一个空消息,分隔符和一个或多个消息体组成。
ZMQ_ROUTER
本类型的socket是一种用于扩展请求/响应模式的高级模式。当接收消息时,在将消息传递给下一个环节时,ZMQ_ROUTER socket在消息的前面追加一个包含发送方标识的字段。 每个消息按照fair-queue方式接收。当发送消息时,ZMQ_ROUTER socket将移除消息的第一个部分,并用它决定消息要发送的目的地。如果目的地不存在,则消息被丢弃。当ZMQ_ROUTER socket达到高水位时,它将进入异常状态,这时所有发到这个socket的消息将被丢弃。同样,路由到一个不存在的对端或对端已经达到高水位时,消息将被丢弃。当一个ZMQ_REQ连接到一个ZMQ_ROUTER socket时,每个收到的消息必须包含发送端的标识和一个分隔符。因此,收到的消息的结构是:一个或多个标识,分隔符,一个或多个消息体。当发送响应给ZMQ_REQ socket时,应用程序必须包含分隔符。
- ZeroMQ接口API解读(1) zmq_socket()
- ZeroMQ接口函数之 :zmq_socket – 创建ZMQ套接字
- zeromq 中的zmq_socket 中的 ZMQ_REP 和 ZMQ_REQ
- zmq_socket()
- zmq_socket
- JAVA API中Collection接口中子接口及子类关系及方法解读
- 解读官方Android MediaPlayer API(1)
- ZeroMQ(ZMQ)函数接口英汉直译
- ZeroMQ 入门 (1)
- zeromq
- zeromq
- zeroMQ
- Zeromq
- zeroMQ
- zeroMQ
- zeromq
- zeromq
- zeromq
- Struts中的ActionContext和ActionContextCleanup
- Qt 的一些心得(背景设置,圆角,半透明)
- gvim菜单乱码问题解决方法
- linux shell编程五步拳(张迅雷闪击shell系列) 第二集 shell编程基本语法快速入门
- Android中的Layout_weight详解
- ZeroMQ接口API解读(1) zmq_socket()
- iso15675 道路车辆控制局域网络诊断 第二部分 网络层服务 阅读笔记 (2)
- 关于宏定义汇编函数的的做法
- APPRO DM36x IPNC 2.0 配置设备从NFS启动
- 数据库的简介:
- (二)使用预定义模型 QStringListModel例子
- iOS中日志打印Q&A
- 付费搜索广告在平板领域增长迅速 环比增40%
- Android中ArrayList<E>动态数组用法