XPUB/XSUB パターンのハブを NetMQ + コントロール ソケット (ハブの動作を制御するため) で実装しようとしています。プロキシ、NetMqPoller を使用しており、制御ソケットを使用したい。しかし、私が何をしようとしても、うまくいきません。ここに私のコードがありますが、それが機能しない理由はありますか?
Using xpubSocket As New XPublisherSocket("@tcp://127.0.0.1:1234")
Using xsubSocket As New XSubscriberSocket("@tcp://127.0.0.1:5678")
Using plr As New NetMQPoller()
Using ctrlIn As New StreamSocket(">tcp://127.0.0.1:5678")
AddHandler ctrlIn.ReceiveReady, AddressOf ctrlIn_ReceiveReady
plr.Add(xpubSocket)
plr.Add(xsubSocket)
plr.Add(ctrlIn)
Dim proxy As New Proxy(xsubSocket, xpubSocket, ctrlIn, plr)
proxy.Start()
plr.Run()
End Using
End Using
End Using
End Using
また、ctrlIn ソケットがデータを受信するたびに実行されるメソッドもあります。
Sub ctrlIn_ReceiveReady(sender As Object, e As NetMQSocketEventArgs)
Dim bytes() As Byte
While (e.Socket.TryReceiveFrameBytes(bytes))
Console.WriteLine("Received {0} bytes.", bytes.Length)
End While
End Sub
簡単な説明: ハブ (XPUB/XSUB) は完全に機能します。つまり、パブリッシャーとサブスクライバーを開始すると、メッセージが流れるのがわかります。しかし、制御ソケットは機能しません。2 つのメッセージしか表示されません。
Received 5 bytes.
Received 10 bytes.
その後、制御ソケットはサイレントのままになり、それ以上のバイトフローはありません。誰かが私がどこで間違っているか知っていますか? または、誰かが実際の例を指摘できますか? 例を探していましたが、制御ソケットが機能しているものは見つかりませんでした。