RabbitMQ系列

RabbitMQ(一)——简介

RabbitMQ(二)——模式类型

RabbitMQ(三)——简单模式

RabbitMQ(四)——工作队列模式

RabbitMQ(五)——发布订阅模式

RabbitMQ(六)——路由模式

RabbitMQ(七)——主题模式

RabbitMQ(八)——消息确认

RabbitMQ(九)——消息持久化

RabbitMQ(十)——消息优先级

 

  对于交换机(exchange)与队列(queue)的持久化只需要将durable属性设置为true即可,当重启RabbitMQ服务后,交换机和队列都会恢复,但是当只有队列的durable属性设置为true时,重启后会造成消息丢失。

 

实现

  首先是设置生产者的交换机和队列的持久化属性durable为true,再设置IBasicProperties.Persistent为true,发布时带上BasicProperties

        //1.创建连接工厂
            ConnectionFactory factory = new ConnectionFactory()
            {
                HostName = "127.0.0.1",
                UserName = "guest",
                Password = "guest"
            };
            //2.创建连接
            using (var connection = factory.CreateConnection())
            //3.创建管道
            using (var channel = connection.CreateModel())
            {
                //4.创建交换器
                channel.ExchangeDeclare("exchange", "fanout");
                channel.QueueDeclare("SMSqueue",true,false,false,null);
                channel.QueueDeclare("SMAILqueue", true, false, false, null);
                channel.QueueBind("SMSqueue", "exchange","",null);
                channel.QueueBind("SMAILqueue", "exchange","",null);
                //消息持久化
                //IBasicProperties basicProperties = channel.CreateBasicProperties();
                //basicProperties.Persistent = true;
                string msg = "";

                for (int i = 0; i < 10; i++)
                {
                    msg = $"发布消息{i}";
                    var body = Encoding.UTF8.GetBytes(msg);
                    channel.BasicPublish("exchange", "", null, body);
                    Console.WriteLine($"发布成功:{msg}");
                    Thread.Sleep(1000);
                }
                Console.ReadKey();
            }    
View Code

相关文章:

  • 2021-06-17
  • 2022-12-23
  • 2022-01-16
  • 2021-09-29
  • 2022-02-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-04-03
  • 2021-10-19
  • 2021-07-20
  • 2022-12-23
相关资源
相似解决方案