J'ai créé 2 projets de console C# simples (.net 4.5.2), ajouté le package NetMQ Nuget v4.0.0.1 à chacun, chargé chaque programme séparément Visual Studio 2017 Community Editions, a mis un point d'arrêt sur la ligne 1 contenue dans la méthode de rappel OnReceiveReady, a démarré le programme d'abonné en premier, puis a démarré le programme d'éditeur. L'événement ReceieveReady n'est pas déclenché dans l'abonné. Qu'est-ce que je fais mal? Même si j'ai choisi subSocket.Subscribe (""), je n'ai toujours pas reçu de messages. De plus, supprimer/modifier les HighWatermark Send/Receive n'a pas non plus changé les choses. Merci de votre aide!Impossible d'obtenir ReadyReceive pub-sub pour travailler avec NetMQ 4.x
Voici le code Editeur:
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);
}
}
}
}
Voici le code d'abonné:
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();
}
}
}