中间件系列二 RabbitMQ之消息持久性、确认机制、拒绝、预取数量、分配策略

本文深入探讨RabbitMQ的关键特性,包括消息的持久化以确保数据可靠性,消息确认机制的自动和显式模式防止消息丢失,以及消息的拒绝策略。此外,还介绍了预取消息的数量设置和消息分配策略。
摘要由CSDN通过智能技术生成

1. 概述

本文主要对RabbitMQ消息的特性进行总结,主要包括如下内容:

  • 消息的持久性
  • 消息确认机制
  • 两种方法拒绝消息
  • 设置预取消息的数量
  • 消息分配策略

2. 消息的持久性

为了保证消息的可靠性,需要对消息进行持久化。
为了保证RabbitMQ在重启、奔溃等异常情况下数据没有丢失,除了对消息本身持久化为,还需要将消息传输经过的队列(queue),交互机进行持久化(exchange),持久化以上元素后,消息才算真正RabbitMQ重启不会丢失。

消息持久化
方法:

void basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body) throws IOException;   

第三个参数props:设置投递模式为持久化,如果此值是persistent ,则此消息存储在磁盘上。如果服务器重启,系统会保证收到的持久化消息未丢失,将消息以持久化方式发布时,会对性能造成一定的影响

消息持久化代码如下:

channel.basicPublish("", TASK_QUEUE_NAME,
                    MessageProperties.PERSISTENT_TEXT_PLAIN,
                    message.getBytes("UTF-8"));  

队列持久化

Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,
                                 Map<String, Object> arguments) throws IOException;

详细参数如下:

第二个参数 durable
是否持久化,如果true,则此种队列叫持久化队列(Durable queues)。此队列会被存储在磁盘上,当消息代理(broker)重启的时候,它依旧存在。没有被持久化的队列称作暂存队列(Transient queues)。
第三个参数 execulusive
表示此对应只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable
第四个

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值