• RabbitMQ 消息可靠性的机制


    RabbitMQ 消息可靠性

    一、发布确认机制。

    生成者发送消息,Exchange路由消息到队列,RabbitMQ就会给生产者发送确认Ack。(注意:发布确认机制不能和事务机制一起使用)

    注意:多消息发布确认机制情况下,倘若要发送 100 条消息,发送 90 条后,突然网络故障,后面的消息发送失败了,那么 isAllPublished 返回的是 false,而前面 90 条消息已经发送到消息队列了。我们还不知道哪些消息是发送失败的,所以很多条消息发布确认,建议分几次发送或多通道发送

    二、持久化

    消息存放到消息队列后,在不配置消息持久化的情况下,若服务器重启、关闭或宕机等,消息都会丢失。持久化需要同时配置消息持久化队列持久化。单配置消息持久化,队列消失了,消息没有地方存放;单配置队列持久化,队列还在,消息没了。

    三、消费确认

    为了确保消息被消费者消费,RabbitMQ 提供消费确认模式(consumer Acknowledgements)。自动确认模式,当消费者成功接收到消息后,自动通知 RabbitMQ,把消息队列中相应消息删除。这很大程度上满足不了我们,假如消费者接收到消息后,服务器宕机,消息还没处理完成,这样就会造成消息丢失。手动确认模式,当消费者成功处理完消息后,手动发消息通知 RabbitMQ,把消息队列中相应消息删除。

    注意:消息处理完成后,一定要把处理完成的消息发送到 RabbitMQ(channel.BasicAck(ea.DeliveryTag, false)),不然 RabbitMQ 会一直等待,从而造成内存泄露。

  • 相关阅读:
    解决 typedef void * POINTER_64 PVOID64; 问题
    短时间内快速获取随机数的方法
    怎样彻底重装IE
    在InstallShield中手动修改XML Files Changes
    Data, Privacy, & ECommerce ISDPE2010 Call for Papers
    DOS命令输出的重定向
    解决:Error spawning 'cmd.exe'
    wuapi 相关文件下载URL
    使用临界区 CRITICAL_SECTION 实现互斥
    修正 IPMSG 2.51 版本中的一点翻译错误
  • 原文地址:https://www.cnblogs.com/aric2016/p/12339707.html
Copyright © 2020-2023  润新知