rabbitMq消息持久化机制,和延时队列

RabbitMQ的一大特色是消息的可靠性,那么它是如何保证消息可靠性的呢?

消息持久化。可以将Queue,Exchange,Message都设置为可持久化的。为了保证RabbitMQ在退出,服务重启或者crash等异常情况下,也不会丢失消息。

RabbitMQ服务异常,重启时候怎么保证消息不丢失,持久化的实现?

1、Queue(消息队列)的持久化是通过durable=true来实现的。 

Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
//关键的是第二个参数设置为true,即durable=true.
channel.queueDeclare("queue.persistent.name", true, false, false, null);
/到这步仅仅是做到了消息队列的持久化,还没有做消息持久化。

2、Message(消息)的持久化 ,通过设置消息是持久化的标识。

//MessageProperties.PERSISTENT_TEXT_PLAIN 
channel.basicPublish("exchange.persistent", "persistent", MessageProperties.PERSISTENT_TEXT_PLAIN, "persistent_test_message".getBytes());

3、Exchange(交换机)的持久化 。

//即在声明的时候讲durable字段设置为true即可。
channel.exchangeDeclare(exchangeName, “direct/topic/header/fanout”, true);

猜你喜欢

转载自www.cnblogs.com/lgg20/p/12521256.html