RabbitMQ在一个连接中发送和使用消息
本文关键字:消息 连接 一个 RabbitMQ | 更新日期: 2023-09-27 17:57:32
我可以创建一个连接来侦听队列并将消息发送到另一个交换机吗?目前,如果我使用一个连接进行发送,我的消费者会收到它,但它甚至不绑定到这个交换机。
也许,应该更改一些设置?
当然可以。
-
在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#通道不是多线程的,所以应该为线程创建一个通道。