首页 > 解决方案 > NetMQ 多个发布者

问题描述

我正在运行一个 pub-sub 设置,该设置非常适用于单个发布者和多个订阅者。

但是我现在希望有几个发布者发布到同一个“频道”,当我尝试这个时,我第二次尝试绑定我得到一个地址已经使用的错误。

为什么我不能有第二个出版商?

这适用于大约 250K 消息/秒的高吞吐量应用程序,快速阅读 xPub-xSub 表明中介会增加开销。

   private void BackgroundProcess()
    {
        int msgSeqNum = 0;
        using (var server = new PublisherSocket())
        {
            server.Options.SendHighWatermark = 1000;
            server.Bind(Connection);


            var address = Key;
            string txt;
            while (true)
            {

                if (O.TryTake(out txt, 60000))
                {
                    msgSeqNum++;
                    server.SendMoreFrame(address).SendMoreFrame(msgSeqNum.ToString()).SendMoreFrame(DateTime.UtcNow.ToString("yyyyMMddTHHmmssffffff")).SendFrame("Whatever");
                }

            }

        }
    }

标签: c#zeromqnetmq

解决方案


Netmq 可以使用一对一的套接字集或一对多的套接字集。您已经接近了,您将需要 xpub xsub 作为代理 netmq 实际上为此提供了一个代理。

https://netmq.readthedocs.io/en/latest/xpub-xsub/

至于为什么,这是底层tcp层的限制,不能将多个tcp监听器绑定到单个端口afaik


推荐阅读