Docker RabbitMQ 消息在重启时消失

Gra*_*ter 5 c# rabbitmq docker

我使用这个命令行新的 RabbitMQ 容器

docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq --hostname rabbitmq rabbitmq:management
Run Code Online (Sandbox Code Playgroud)

代码设置durable:true,则重启容器队列存在,消息消失

channel.QueueDeclare(
    queue: name,        
    durable: true,      
    exclusive: false,   
    autoDelete: false,  
    arguments: null     
);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请问什么问题?谢谢

mtk*_*nko 3

来自官方文档

当 RabbitMQ 退出或崩溃时,它会忘记队列和消息,除非您告诉它不要这样做。要确保消息不丢失,需要做两件事:我们需要将队列和消息标记为持久的。

所以你需要这样的东西:

var properties = channel.CreateBasicProperties();
properties.Persistent = true;

channel.BasicPublish(exchange: "",
                     routingKey: "task_queue",
                     basicProperties: properties,
                     body: body);
Run Code Online (Sandbox Code Playgroud)