更新时间:2022-08-22 11:56:23
通过对Guide的阅读,可以发现ZeroMQ对这个世界中消息传输的模式进行了很好的抽象。为了描述模式,0mq定义了不同的socket。 0mq socket是0mq世界的东西,跟传统世界的socket是不一样的。
我们知道,传统的socket其实就是访问下面两种(TCP & UDP)对象的同步的接口:
所以你可以说传统socket传输的是字节流或者独立的报文。
而0mq的socket传输的是消息(Message)。它是对异步消息队列(MQ)的一种抽象。官方的原话是:
ØMQ sockets present an abstraction of an asynchronous message queue, with the exact queueing semantics depending on the socket type in use.
异步的意思在这里指的是物理连接的创建、销毁、重连、传输对于用户来说都是透明的,这些东西都由0mq组织好了。它传输的是独立的消息。队列隐含的意思是万一消息无法到达对端则可能会被排队。
除了传统socket实现的一对一、多对一以及一对多(广播)外,0mq的socket还可以用zmq_connect()发起连接到多个对端,并同时接受从多个用zmq_bind()绑定了0mq-socket的对端发起的链接,从而实现多对多。
0mq归纳的模式有四种