RabbitMQ 队列可以有多个订阅者吗?

2023-12-07

我的 C# 控制台应用程序中有以下超级代码,用于从 RabbitMQ 队列中排出消息:

consumer = new EventingBasicConsumer(_channel);
consumer.Received += (o, e) =>
{
    //onMessageReceived()
};


consumer.Shutdown += (oo, oe) =>
{
    //Handle Subscribe event
};
_channel.BasicConsume(QueueName, false ,consumer);

我运行此控制台应用程序的两个实例来模拟多个订阅者的情况。我总是向第一个订阅者发送消息,而第二个订阅者总是空闲。 RabbitMQ 队列上的同一个队列可以有多个订阅者吗?


是的,您可以,但是如果控制台应用程序正在使用来自同一队列的消息,那么它们就会相互竞争。因此队列中的消息将仅被其中之一消耗。

如果您希望有更多订阅者接收相同的消息,则需要为每个订阅者定义一个不同的队列,绑定到应该是的交换器(消息通过的地方)fanout or topic (not direct).

更多信息here and here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RabbitMQ 队列可以有多个订阅者吗? 的相关文章

随机推荐