假设有三个(可以是任意数量)发布者(在不同的 Exe 上运行),它们分别发布到 127.0.0.1:1234,127.0.0.1:1235,127.0.0.1:1236。
目前,我可以使用以下方式连接 Pub-Sub
subscriber.Connect("tcp://127.0.0.1:22223");
Run Code Online (Sandbox Code Playgroud)
我如何才能连接到 3 个订阅者。抱歉,我阅读了指南,他们说我可以使用订阅者来做到这一点。我尝试失败
根据ZeroMQ 文档:
除了 ZMQ_PAIR 套接字之外,单个套接字可以使用 zmq_connect() 连接到多个端点,同时使用 zmq_bind() 接受来自绑定到套接字的多个端点的传入连接。
所以这应该是可能的,如果不是,可能是由于您正在使用的实现存在问题。以下使用NetMQ 的示例对我有用:
private static NetMQContext _context = NetMQContext.Create();
public static void Main(string[] args)
{
Thread publish1 = new Thread(() => Publish(5000));
Thread publish2 = new Thread(() => Publish(5001));
publish1.Start();
publish2.Start();
Subscribe();
}
private static void Publish(ushort port)
{
using (NetMQSocket socket = _context.CreatePublisherSocket())
{
socket.Bind("tcp://127.0.0.1:" + port);
while (true)
{
socket.Send("Hello from " + port);
Thread.Sleep(1000);
}
}
}
private static void Subscribe()
{
using (NetMQSocket socket = _context.CreateSubscriberSocket())
{
socket.Connect("tcp://127.0.0.1:5000");
socket.Connect("tcp://127.0.0.1:5001");
socket.Subscribe("");
while (true)
{
Console.WriteLine(socket.ReceiveString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出:
Hello from 5000
Hello from 5001
Hello from 5000
Hello from 5001
[...]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2823 次 |
| 最近记录: |