NetMQ несколько издателей - PullRequest
0 голосов
/ 01 ноября 2018

Я использую настройку паб-саб, которая очень хорошо работает для одного издателя и нескольких подписчиков.

Но теперь я хочу, чтобы несколько издателей публиковали на одном и том же «канале», когда я пытаюсь это сделать, во второй раз, когда я пытаюсь выполнить привязку, я получаю ошибку, уже использованную адресом.

Почему у меня не может быть второго издателя?

Это для приложения с высокой пропускной способностью около 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");
                }

            }

        }
    }

1 Ответ

0 голосов
/ 01 ноября 2018

Netmq работает либо с набором сокетов один на один, либо с набором сокетов один ко многим. Вы приближаетесь, вам понадобится xpub xsub для работы, поскольку прокси-сервер netmq фактически предоставляет его для этой цели.

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

Что касается того, почему это ограничение базового уровня tcp, вы не можете привязать несколько слушателей tcp к одному порту afaik

...