2つのシンプルなC#コンソールプロジェクト(.net 4.5.2)を作成し、それぞれにv4.0.0.1 NetMQ Nugetパッケージを追加し、 Visual Studio 2017 Community Editionでは、OnReceiveReadyコールバックメソッドに含まれる1行にブレークポイントを設定し、最初にサブスクライバプログラムを起動し、次にパブリッシャプログラムを開始しました。 ReceiveReadyイベントがサブスクライバでトリガされていません。私は間違って何をしていますか?私がsubSocket.Subscribe( "")を選択したとしても、受信したメッセージはまだ得られませんでした。また、Send/Receive HighWatermarksを削除/変更しても変更されませんでした。ご協力いただきありがとうございます!ReadyReceive pub-subをNetMQ 4.xを使用して動作させることができません
はここで出版社コードです:
using System;
using NetMQ;
using NetMQ.Sockets;
using System.Threading;
namespace SampleNQPub
{
class Program
{
static void Main(string[] args)
{
var addr = "tcp://127.0.0.1:3004";
using (var pubSocket = new PublisherSocket())
{
Console.WriteLine("Publisher socket binding.");
pubSocket.Options.SendHighWatermark = 10;
pubSocket.Bind(addr);
for (int i=0; i < 30; i++)
{
pubSocket.SendMoreFrame("NQ").SendFrame(i.ToString());
Thread.Sleep(1000);
}
pubSocket.Disconnect(addr);
}
}
}
}
ここでは加入者コードは次のとおりです。
using System.Threading;
using NetMQ;
using NetMQ.Sockets;
namespace SampleNQSub
{
class Program
{
static void Main(string[] args)
{
var addr = "tcp://127.0.0.1:3004";
using (var subSocket = new SubscriberSocket())
{
subSocket.ReceiveReady += OnReceiveReady;
subSocket.Options.ReceiveHighWatermark = 10;
subSocket.Connect(addr);
subSocket.Subscribe("NQ");
for (int i=0; i < 20; i++)
{
Thread.Sleep(1000);
}
subSocket.Disconnect(addr);
}
}
static void OnReceiveReady(object sender, NetMQSocketEventArgs e)
{
var str = e.Socket.ReceiveFrameString();
}
}
}