Java开发周更

RabbitMQ高可用需要考虑哪些内容

2018-09-13  本文已影响2人  昙花未现

1. 消息持久化

交换机的持久化通过创建交换机时设置持久化标志。

队列的持久化也是一样。

2. 消息生产

生产者发送消息到RabbitMQ服务器会有失败的可能性。

生产者发送消息失败有很多种情况,一般利用重试机制和confirm机制来确保生产者的高可用。

3. 消息消费

消费者消费消息也会有失败的可能性。使用spring amqp的RabbitListener机制消费消息时,如果消费过程中没有异常发生,spring amqp会自动发送ack给RabbitMQ服务器,消费的消息会从服务器队列中移除。如果发生异常,则服务器会一直重复推送消息到消费端。

这时可以通过设置最大重试次数来阻止服务器一直重试。

要想消息不丢失,需要设置default requeue reject标志为false, 并且为队列配置死信转移队列。死信队列的配置首先需要给队列设置dead letter exchange和dead letter routing key属性,来确认消费失败后消息重新入队的路径。然后新建一个普通队列绑定dead letter exchange和dead letter routing key。这个普通队列就是队列的死信队列。之后如果消息消费失败,并且达到设置的最大重试次数后就会进入死信队列,死信队列同样需要持久化,才能保证消息不丢失。

4. RabbitMQ服务器配置为主备双机,来避免单点失败。

上一篇下一篇

猜你喜欢

热点阅读