RabbitMQ在一个连接中发送和使用消息

本文关键字:消息 连接 一个 RabbitMQ | 更新日期: 2023-09-27 17:57:32

我可以创建一个连接来侦听队列并将消息发送到另一个交换机吗?目前,如果我使用一个连接进行发送,我的消费者会收到它,但它甚至不绑定到这个交换机。

也许,应该更改一些设置?

RabbitMQ在一个连接中发送和使用消息

当然可以。

  • 在RabbitMq中,您希望保持连接(至少一个)打开尽可能长,由于各打开一个的性能影响每次,它在C#中都是线程安全的。

  • 在对面。通道是为每个线程打开的并且不能在C#客户端实现中共享。

在您严格线性工作(没有并行处理)之前,您可以使用进程并通过相同的通道发布(当然是在相同的连接上)。

请注意为一个连接打开的多个通道可能会在流量方面相互阻塞。只有一个通道可以通过连接同时发送/接收。因此,请尝试组织在同时发布和使用期间不会相互阻塞的连接和通道。

是,您可以使用相同的连接,但必须使用两个通道。

阅读此处:http://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html

例如:

using (var channel = myConnection.CreateModel())
{
    channel.QueueDeclare("hello", false, false, false, null);
    var consumer = new QueueingBasicConsumer(channel);
    channel.BasicConsume("", true, consumer);

和同样的联系。。。

using (var channel = myConnection.CreateModel())
{
    channel.QueueDeclare("hello", false, false, false, null);
    string message = "Hello World!";
    var body = Encoding.UTF8.GetBytes(message);
    channel.BasicPublish("", "", null, body);
    Console.WriteLine(" [x] Sent {0}", message);
}

请注意:c#通道不是多线程的,所以应该为线程创建一个通道。