gpt4 book ai didi

c# - RabbitMQ 中的消息持久化

转载 作者:行者123 更新时间:2023-12-02 04:00:02 26 4
gpt4 key购买 nike

我正在编写一个小应用程序,其中使用 RabbitMQ 发送/接收消息。一切正常,但我在消息持久性方面遇到了困难。

即使服务器重新启动,我也希望消息保留在队列中。我了解交换和队列级别的持久性概念,并将它们设置为 true (而不是默认为 true)。因此,当我重新启动 RabbitMQ 服务器时,交换和队列保持不变,但队列中的消息被删除。

我正在使用 EasyNetQ.IBus 接口(interface)发送消息。

谢谢

最佳答案

使用RabbitMQ.Client,您可以使用IBasicProperties设置传递模式,可以使用IModel.CreateBasicProperties()方法获取该传递模式。

using (IConnection conn = factory.CreateConnection())
using (IModel channel = conn.CreateModel())
{
channel.ExchangeDeclare(exchange, ExchangeType.Direct, durable: true);
channel.QueueDeclare(queue, durable: true, exclusive: false, autoDelete: false, arguments: null);
channel.QueueBind(queue, exchange, routingKey, null);

var props = channel.CreateBasicProperties();
props.Persistent = true; // or props.DeliveryMode = 2;

channel.BasicPublish(exchange, routingKey, props, Encoding.Default.GetBytes(message));
}

关于c# - RabbitMQ 中的消息持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32719616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com