0

パブリッシャーソケットへの新しいサブスクリプションでイベントを発生させる方法があるかどうか疑問に思っていました

例えば:

        PublisherSocket publisher = new PublisherSocket();

        publisher.Bind("tcp://*:5555");

        NetMQPoller poller = new NetMQPoller { publisher };
        poller.RunAsync();

        poller.OnSubscription += topic =>
        {
            AddToPool(topic);
        };

        Task.Factory.StartNew(() =>
        {
            SubscriberSocket sub = new SubscriberSocket();
            sub.Connect("tcp://127.0.0.1:5555");

            Thread.Sleep(1000);
            sub.Subscribe("A");
        }, TaskCreationOptions.LongRunning);

        publisher.ReceiveReady += Publisher_ReceiveReady;

もちろん、OnSubscription実際には存在しませんが、それを回避する方法があるかどうか疑問に思っていました。

サーバーがすべてのサブスクリプションを認識する必要があります。

私はそれを実装する2つの方法について考えました:

  1. サーバーに追加のルーター ソケットを作成します。すべてのサブスクリプションは、パブリッシャ ソケットとルーター ソケットの両方に送信されます (サブスクリプション解除も同様)。これにより、ルーターからサブスクリプションをポーリングできるようになります。

  2. パブリッシャー/サブスクライバーをまったく使用せず、すべての pubsub メカニズムをルーター/ディーラーで作成します。

あなたは私に何をするように提案しますか?

4

1 に答える 1

1

PUB ソケットではなく XPUB を使用すると、他のソケット タイプの通常のメッセージと同じようにサブスクリプション メッセージを受信できます。

于 2017-01-12T14:56:25.680 に答える