96SEO 2025-09-01 09:17 5
在声明队列时 需要将durable
参数设置为true
这样RabbitMQ会在服务器重启后保留该队列。
同样地, 在声明交换机时也需要将durable
参数设置为true
。
boolean durable = true;
String exchangeType = "direct"; // 或者其他类型, 如"topic", "fanout", "headers"
;
在绑定队列到交换机时不需要特别设置参数,主要原因是绑定操作本身不涉及持久化。
;
通过将消息的投递模式设置为2即可实现消息的持久化。
boolean durable = true;
MessageProperties properties = new MessageProperties.Builder.deliveryMode.build;
为了确保消息在消费者处理完毕后才从队列中删除,可以使用消费者确认机制。
boolean autoAck = false; // 关闭自动确认
Channel.basicConsume;
在创建队列时需要设置队列的持久化属性。
boolean durable = true;
QueueBuilder.durable.build;
在创建交换机时需要设置交换机的持久化属性。
boolean durable = true;
DirectExchange exchange = new DirectExchange;
通过以上步骤,可以实现RabbitMQ消息的持久化。先说说 声明交换机和队列时需要设置持久化属性;接下来发送消息时需要设置消息的持久化属性;再说说使用消费者确认机制来确保消息处理完毕后从队列中删除。
public class RabbitMQPersistenceExample {
public static void main throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory;
factory.setHost;
try ;
Channel channel = connection.createChannel) {
channel.exchangeDeclare;
channel.queueDeclare;
channel.queueBind;
String message = "Hello, RabbitMQ!";
channel.basicPublish.deliveryMode, message.getBytes);
channel.basicConsume;
}
}
}
Demand feedback