微服务_消息可靠投递

RabbitMQ消息确认机制
    
    publisher------>Exchange------>Queue----------->consumers

publisher 发送端
    confirmCallback
        #开启发送端确认
        spring.rabbitmq.publisher-confirm=true
        
        消息只要被broker接收到就会执行confirmCallback
        被broker接收到只能表示message已经到达服务器,并不能保证消息一定会被投递到目标queue里。
        所以需要用到接下来的returnCallback
    
    returnCallback
        #开启发送端消息抵达队列确认
        spring.rabbitmq.publisher-returns=true
        spring.rabbitmq.template.mandatory=true
    
        Exchange----->Queue
        
        
consumers    消费端
    Ack消息确认机制
    
    #设置手动ack消息
    spring.rabbitmq.listener.simple.acknowledge-model=manual
    
    消费者获取到消息,成功处理,可以回复Ack给Broker
    -basic.ack 用于肯定确认;broker将移除此消息
    -basic.nack 用于否定确认;可以指定broker是否丢弃消息,可以批量
    -basic.reject 用于否定确认;不能批量
    
    
    如何签收:
    channel.basicAck();签收
    channel.basicNack();拒签
    
    
    
    
    
    

 

    
    

posted @ 2022-07-22 14:32  Chen_Ken  阅读(62)  评论(0)    收藏  举报