验证rabbitmq的常用功能
验证rabbitmq的基本功能。
三种交换器
@Queue,如果设置了autoDelete=true,即表示创建临时队列,当所有消费者断开连接时,此队列会被删除。这时生产者发送的消息无处存储,会发生消息丢失。
@Exchange,如果设置了autoDelete=true,表示当所有绑定的队列都不工作时,此交换器自动删除。
把autoDelete设置成false,即可启动消息持久化。
如果在处理消息的过程中,消费者的服务器在处理消息时出现异常,那可能这条正在处理的消息就没有完成消息消费,数据就会丢失。为了确保数据不会丢失,RabbitMQ支持消息确认:ACK。
ACK机制是消费者从RabbitMQ收到消息并处理完成后,反馈给RabbitMQ,RabbitMQ收到反馈后才将此消息从队列中删除。
如果忘记了ACK,那么后果很严重。当Consumer退出时,Message会一直重新分发,消费者又瘫痪。然后RabbitMQ会占用越来越多的内存,由于RabbitMQ会长时间运行,因此这个“内存泄漏”是致命的。
spring:
application:
name: verify-fanout-consumer
rabbitmq:
username: guest
password: guest
host: 192.168.3.200
port: 5672
listener:
direct:
retry:
enabled: true #开启重试
max-attempts: 3 #默认就是3次