通过NuGet安装
RabbitMQ.Client
以下是一个简单的示例代码,演示如何使用 C# 和 RabbitMQ 客户端库来发送和接收消息:
usingRabbitMQ.Client;usingRabbitMQ.Client.Events;usingSystem;usingSystem.Text;publicclassProgram{publicstaticvoidMain(){// 设置连接参数var factory =newConnectionFactory(){ HostName ="localhost", Port =5672, UserName ="guest", Password ="guest"};// 建立连接和通道using(var connection = factory.CreateConnection())using(var channel = connection.CreateModel()){// 声明 Exchange
channel.ExchangeDeclare(exchange:"myexchange", ExchangeType.Direct);// 声明队列
channel.QueueDeclare(queue:"myqueue",durable:false,exclusive:false,autoDelete:false,arguments:null);// 绑定 Exchange 和 Queue
channel.QueueBind(queue:"myqueue",exchange:"myexchange",routingKey:"myroutingkey");// 发送消息for(int i =0; i <5; i++){string message = i.ToString();var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange:"myexchange",routingKey:"myroutingkey",basicProperties:null,body: body);}// 接收消息var consumer =newEventingBasicConsumer(channel);
consumer.Received +=(model, ea)=>{var body = ea.Body.ToArray();var message = Encoding.UTF8.GetString(body);
Console.WriteLine($"第{message}次开始{DateTime.Now}");
Thread.Sleep(3000);
Console.WriteLine($"第{message}次结束{DateTime.Now}");};
channel.BasicConsume(queue:"myqueue",autoAck:true,consumer: consumer);
Console.ReadLine();//日志输出//第0次开始2023 / 6 / 28 11:29:46//第0次结束2023 / 6 / 28 11:29:49//第1次开始2023 / 6 / 28 11:29:49//第1次结束2023 / 6 / 28 11:29:52//第2次开始2023 / 6 / 28 11:29:52//第2次结束2023 / 6 / 28 11:29:55//第3次开始2023 / 6 / 28 11:29:55//第3次结束2023 / 6 / 28 11:29:58//第4次开始2023 / 6 / 28 11:29:58//第4次结束2023 / 6 / 28 11:30:01}}}
durable持久化
durable
参数用于指定队列是否是持久化的。
当
durable
参数设置为
true
时,表示队列是持久化的。持久化的队列会在RabbitMQ服务器重启后仍然存在,确保数据的持久性。如果你的消息需要长期存储或重要性很高,建议将
durable
设置为
true
。
当
durable
参数设置为
false
时,表示队列是非持久化的。非持久化的队列在RabbitMQ服务器重启后会被删除。如果你的消息是临时性的或不需要持久化,可以将
durable
设置为
false
。
一般来说,你需要根据你的业务需求来确定队列是否需要持久化。如果你希望确保即使在RabbitMQ服务器重启后消息仍然可用,或者消息具有重要性,那么你应该将
durable
设置为
true
。
示例:
_channel.QueueDeclare(queue: queueName,durable:true,// 设置为true表示队列是持久化的
exclusive:false,autoDelete:false,arguments:null);
RabbitMQ官方文档:https://www.rabbitmq.com/documentation.html
版权归原作者 让梦想疯狂 所有, 如有侵权,请联系我们删除。