zeromq中的router/dealer模式在多线程下的无法收到消息?


期待熟悉zeromq的前辈。

在zeromq的 guide 里,它用router/dealer模式做了一个broker
shared queue

client对应ZMQ_REQ类型的zmq_socket
worker对应ZMQ_REP类型的zmq_socket
broker创建一个router和一个dealer,router接受client的消息并转发给worker,worker再把处理结果发送给dealer,dealer再转发给client.

然后我尝试把这个代码做一个变换,由多进程改为多进程,代码如下:
https://gist.github.com/ichenq/61fc280e153313e2d828

可是broker收到client的消息后,却无法发送给worker,不知道是什么原因?
或者不知道我的代码里哪个API没有用对?

zeromq 消息队列 C++

Key-Yao 10 years, 3 months ago

2小时后自问自答。

的确是自己代码的问题, create_broker函数里传递给zmq_msg_send的参数ZMQ_SNDMORE写成了ZMQ_MORE。
现在gist已经更新。

用tcp可以做ipc,用inproc可以做多线程并行,zeromq实在是顶呱呱~

压力好大V answered 10 years, 3 months ago

Your Answer