在Majordomo模式中,worker中的一段代码看起来像这样
mdwrk session ("tcp://localhost:5555", sourceStr.c_str(), verbose);
zmsg *reply = 0;
while (1) {
zmsg *request = session.recv (reply);
if (request == 0) {
break; // Worker was interrupted
}
//reply = request; // Echo is complex... :-)
reply = new zmsg(sourceStr.c_str());
}
对我的工作人员来说,客户的请求是一个发送到交易所的订单。在我将订单发送到交易所之后,我正试图解决这个问题,然后我收到一条消息,如Insert,Pending,New等,我可以将FIX响应的内容填入zmsg *回复。
FIX消息异步回来,所以我无法说出
reply = FIXResponse;
这是如何解决的?
答案 0 :(得分:0)
我认为Majordomo协议是为了处理同步请求而在这里并不合适。
刚刚遇到了其他一个问题,并且发现这些回复有多个来源。你可以将它们全部推入一个稳定的PULL插座吗? (然后在适当的时候重新发布。如果音量很低,你甚至可以通过持久用户获得可靠性。)