1、Confirm机制
消息的确认,是指生产者投递消息后,如果Broker收到消息,会给我们生产者一个应答。
生产者进行接受应答,用来确定这条消息是否正常的发送到Broker,这种方式也是消息可靠性投递的核心保障。
2、Return机制
Return Listener用于处理一些不可路由的消息。
生产者发送消息的时候,当exchanger不存在或者指定的路由key路由不到,生产者可以使用Return Listener监听这种不可达的消息。
3、消费者ACK与重回队列
消费端关闭自动签收时,需要手动签收一条消息,如果消费者a收到了消息a但是没有ack,也没有unack,消费者a不会再次接收到消息a,消息a在队列中的状态是unacked,当消费者a断开与mq的连接后,消费者b可以继续接受并像消费者a一样处理消息a。
当消费端关闭自动签收,并且打开requeue,消费端unack一条消息后,该消息会经入重回队列,用于再次投递,一般建议关闭requeue。
4、死信队列DLX
当消息在一个队列中变成死信之后,它能被重新publish到另一个Exchange,这个Exchange就是DLX。
消息变成死信有如下几种情况:
1、消息被拒绝(reject/nack)并且requeue=false
2、消息TTL过期
3、队列达到最大长度
5、可靠性传输
一般情况下,可以按照以下流程保证100%投递成功
可靠性传输
若还要提高可靠性,可以一次发送两条消息,第二条延迟发送,做回调检查,中间再增加一个消息回调服务。
网友评论