• 如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?


    发送方确认模式 

    将信道设置成 confirm 模式发送方确认模式),则所有在信道上发布的消息都 

    会被指派一个唯一的 ID。

    一旦消息被投递到目的队列后或者消息被写入磁盘后可持久化的消息), 

    道会发送一个确认给生产者包含消息唯一 ID)。

    如果 RabbitMQ 发生内部错误从而导致消息丢失会发送一条 nack(not

    acknowledged,未确认消息

    发送方确认模式是异步的生产者应用程序在等待确认的同时可以继续发送消 

    当确认消息到达生产者应用程序生产者应用程序的回调方法就会被触发来 

    处理确认消息

    接收方确认机制 

    接收方消息确认机制 

    消费者接收每一条消息后都必须进行确认消息接收和消息确认是两个不同操 

    )。只有消费者确认了消息,RabbitMQ 才能安全地把消息从队列中删除

    这里并没有用到超时机制,RabbitMQ 仅通过 Consumer 的连接中断来确认是否 

    需要重新发送消息也就是说只要连接不中断,RabbitMQ 给了 Consumer  

    够长的时间来处理消息保证数据的最终一致性

    下面罗列几种特殊情况 

    如果消费者接收到消息在确认之前断开了连接或取消订阅,RabbitMQ 会认为 

    消息没有被分发然后重新分发给下一个订阅的消费者。(可能存在消息重复消 

    费的隐患需要去重

    如果消费者接收到消息却没有确认消息连接也未断开 RabbitMQ 认为该消 

    费者繁忙将不会给该消费者分发更多的消息

    Java Program!
  • 相关阅读:
    Linux下 printf 输出字符串的颜色
    ARM指令集详解(超详细!带实例!)
    试试代码框
    java web各种listener
    mysql 技术支持
    Tomcat 技术支持
    关于PreparedStatement.addBatch()方法
    JQuery banner 轮播
    Extjs 提示窗口
    如何删除JSP编译后的空行
  • 原文地址:https://www.cnblogs.com/programb/p/12996021.html
Copyright © 2020-2023  润新知