RabbitMQ中的消息确认ACK机制
我们将消息持久化后,假如消费端出现异常,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
来源:https://blog.csdn.net/liyu121/article/details/99492479
还没有评论,来说两句吧...