zeroMQ初体验-5.高级教程初涉

诸位在前面的例子中,已经可以发现所有的关系都是成对匹配出现的。

之前已经使用的几种模式:

req/rep(请求答复模式):主要用于远程调用及任务分配等。

pub/sub(订阅模式):主要用于数据分发。

push/pull(管道模式):主要用于多任务并行。

除此之外,还有一种模式,是因为大多数人还么有从"TCP"传统模式思想转变过来,习惯性尝试的独立成对模式(1to1).这个在后面会有介绍。

ZeroMQ内置的有效绑定对:

  • PUBandSUB
  • REQandREP
  • REQandXREP
  • XREQandREP
  • XREQandXREP
  • XREQandXREQ
  • XREPandXREP
  • PUSHandPULL
  • PAIRandPAIR

非正常匹配会出现意料之外的问题(未必报错,但可能数据不通路什么的,官方说法是未来可能会有统一错误提示吧),未来还会有更高层次的模式(当然也可以自己开发)。

由于zeroMQ的发送机制,发送到数据有两种状态(是否Copy),在非Copy下,一旦发送成功,发送端将不再能访问到该数据,Copy状态则可以(主要用于重复发送)。还有就是所发送的信息都是保持在内存,故不能随意发送大数据(以防溢出),推荐的做法是拆分逐个发送。(python中的单条信息限制为4M.)

--补充:

这样的发送需要额外标识ZMQ_SNDMORE,在接收端可以通过ZMQ_RCVMORE来判定。

号外!

官方似乎野心勃勃啊,想将zeroMQ加入到Linuxkernel,若真做到可就了不得了。

(未完待续)

相关推荐