0

PUSH/PULL在(Python->C#)中有一个模式0MQ,只有一个PUSH套接字和一个PULL套接字。只要两者都连接,无论worker处理消息需要多长时间,排队消息的顺序都会被保留。

问题是当worker断开一段时间然后重新连接时,那么在此期间排队的所有消息都会以任意随机顺序到达,无论它们是如何被PUSHSocket排队的。这个问题有内置的解决方案还是我应该使用更高级的模式?

我在 PULL 端添加代码:

using (var receiver = new PullSocket())
            {
                receiver.Bind("tcp://localhost:5557");

                while (true)
                {
                    var payload = receiver.ReceiveFrameString();

                    log.Debug($"Payload: {payload}");
                }
            }
4

1 回答 1

0

我很确定 0mqPUSH/PULL不保证交货顺序。

也许您可以这样做REQ/REP(或REQ/ROUTER类似的模式) -REQ/REP当您需要同步事物时会非常有用。在我的脑海中,您可以有一个进程内PUSH/PULL队列,您可以从中提取消息并将它们推送到REQ套接字中。

于 2016-05-02T08:05:04.217 回答