我需要一个示例,说明如何使用 EasyNetQ 库向多个接收者广播相同的消息
I need an example of how to Broadcast same message to multiple receivers using EasyNetQ library
我正在尝试使用 EasyNetQ 从 RabbitMQ 发送和接收消息,
我需要向多个接收者或同时连接的任何人发送相同的消息。
我已经尝试过发布-订阅消息传递模式,它工作正常,但它更像是循环法,一旦接收者收到消息,它就会从队列中删除,其他人都看不到该消息。
这是我的消息发件人。
for (int i = 0; i < 10; i++)
{
using (IBus bus = RabbitHutch.CreateBus(Host))
{
bus.Publish(new TextMessage { Text = $"{i}: Hello World from EasyNetQ" }, "dashboard");
}
}
这是我的接收器。
public void GetMessages()
{
using (IBus bus = RabbitHutch.CreateBus(Host))
{
bus.Subscribe<TextMessage>("dashboard", HandleTextMessage);
Console.WriteLine("Listening for messages. Hit <return> to quit.");
Console.ReadLine();
}
}
static void HandleTextMessage(TextMessage textMessage)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Got message: {0}", textMessage.Text);
Console.ResetColor();
}
收到消息后,其他接收者无法看到该消息,我需要所有连接的接收者看到相同的消息。
我相信这个问题描述了扇出交换的行为。它们没有被广泛使用,但很明显这就是您要找的东西。可以在此处找到更多信息:https://www.tutlane.com/tutorial/rabbitmq/csharp-rabbitmq-fanout-exchange
我不明白 RabbitMQ 是如何工作的。
我所需要的只是创建一个 Exchange 并让 Exchange 将消息发送到队列。
我虽然队列做到了。
实际上,在大多数情况下,EasyNetQ 将使您不必处理交换。要实现您的要求,只需在订阅时指定不同的订阅 ID,例如 GUID:
public void GetMessages()
{
using (IBus bus = RabbitHutch.CreateBus(Host))
{
bus.Subscribe<TextMessage>(Guid.NewGuid().ToString(), HandleTextMessage);
Console.WriteLine("Listening for messages. Hit <return> to quit.");
Console.ReadLine();
}
}
static void HandleTextMessage(TextMessage textMessage)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Got message: {0}", textMessage.Text);
Console.ResetColor();
}
更多信息在这里:
https://github.com/EasyNetQ/EasyNetQ/wiki/Subscribe
我正在尝试使用 EasyNetQ 从 RabbitMQ 发送和接收消息, 我需要向多个接收者或同时连接的任何人发送相同的消息。
我已经尝试过发布-订阅消息传递模式,它工作正常,但它更像是循环法,一旦接收者收到消息,它就会从队列中删除,其他人都看不到该消息。
这是我的消息发件人。
for (int i = 0; i < 10; i++)
{
using (IBus bus = RabbitHutch.CreateBus(Host))
{
bus.Publish(new TextMessage { Text = $"{i}: Hello World from EasyNetQ" }, "dashboard");
}
}
这是我的接收器。
public void GetMessages() {
using (IBus bus = RabbitHutch.CreateBus(Host))
{
bus.Subscribe<TextMessage>("dashboard", HandleTextMessage);
Console.WriteLine("Listening for messages. Hit <return> to quit.");
Console.ReadLine();
}
}
static void HandleTextMessage(TextMessage textMessage)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Got message: {0}", textMessage.Text);
Console.ResetColor();
}
收到消息后,其他接收者无法看到该消息,我需要所有连接的接收者看到相同的消息。
我相信这个问题描述了扇出交换的行为。它们没有被广泛使用,但很明显这就是您要找的东西。可以在此处找到更多信息:https://www.tutlane.com/tutorial/rabbitmq/csharp-rabbitmq-fanout-exchange
我不明白 RabbitMQ 是如何工作的。 我所需要的只是创建一个 Exchange 并让 Exchange 将消息发送到队列。 我虽然队列做到了。
实际上,在大多数情况下,EasyNetQ 将使您不必处理交换。要实现您的要求,只需在订阅时指定不同的订阅 ID,例如 GUID:
public void GetMessages()
{
using (IBus bus = RabbitHutch.CreateBus(Host))
{
bus.Subscribe<TextMessage>(Guid.NewGuid().ToString(), HandleTextMessage);
Console.WriteLine("Listening for messages. Hit <return> to quit.");
Console.ReadLine();
}
}
static void HandleTextMessage(TextMessage textMessage)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Got message: {0}", textMessage.Text);
Console.ResetColor();
}
更多信息在这里: https://github.com/EasyNetQ/EasyNetQ/wiki/Subscribe