RabbitMQ中的消息确认ACK机制

本文探讨了RabbitMQ中消息持久化导致的内存泄漏问题,以及通过开启ack确认机制和设置消费端重试机制来解决此问题的方法。详细介绍了如何配置spring.rabbitmq属性来实现这一目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们将消息持久化后,假如消费端出现异常,rabbitmq服务器会将消息缓存到内存,当生产者发送一直发送消息而消费者都没有正常消费时消息就会将这些消息全部保存在内存,当我们的消息过多时,就可能导致rabbitmq服务器内存泄漏,

解决办法:1.开启ack确认机制,2.消费端设置重试机制(默认是三次)

开启之后生产者客户端没有收到消息ack反馈就会认为该消息没有被消费,就会保存到内存,但是设置重试机制后,消费端消费了设置的重试次数之后,假如还没有收到ack反馈,就会将缓存在内存中的消息移除,这样就可以防止内存溢出

消费端具体配置代码:

spring.application.name=springcloud-mq

spring.rabbitmq.host=192.168.70.131
spring.rabbitmq.port=5672
spring.rabbitmq.username=oldlu
spring.rabbitmq.password=123456

#设置交换器的名称
mq.config.exchange=log.direct

#info队列名称
mq.config.queue.info=log.info

#info路由键
mq.config.queue.info.routing.key=log.info.routing.key

#error队列名称
mq.config.queue.error=log.error

#error路由键
mq.config.queue.error.routing.key=log.error.routing.key

#开启重试
spring.rabbitmq.listener.retry.enabled=true
#重试次数,默认为3次
spring.rabbitmq.listener.retry.max-attempts=5

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值