0


使用C#和RabbitMQ发送和接收消息

通过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

标签: c# rabbitmq

本文转载自: https://blog.csdn.net/qq_21275565/article/details/131433411
版权归原作者 让梦想疯狂 所有, 如有侵权,请联系我们删除。

“使用C#和RabbitMQ发送和接收消息”的评论:

还没有评论