RabbitMQ 消息的可靠投递】的更多相关文章

mq 提供了两种方式确认消息的可靠投递 confirmCallback 确认模式 returnCallback 未投递到 queue 退回模式 在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景.RabbitMQ 为我们提供了两个选项用来控制消息的投递可靠性模式. rabbitmq 整个消息投递的路径为:producer->rabbitmq broker cluster->exchange->queue->consumer message 从 pr…
1.前言 本文的上篇<IM消息送达保证机制实现(一):保证在线实时消息的可靠投递>中,我们讨论了在线实时消息的投递可以通过应用层的确认.发送方的超时重传.接收方的去重等手段来保证业务层面消息的不丢不重. 但实时在线投递针对的是消息收发双方都在线的情况(如当发送方用户A发送消息给接收方用户B时,用户B是在线的),那如果消息的接收方用户B不在线,系统是如何保证消息的可达性的呢?这就是本文要讨论的问题.(本文同步发布于:http://www.52im.net/thread-594-1-1.html)…
消息的可靠性,即消息的不丢失和不重复,是im系统中的一个难点.当初qq在技术上(当时叫oicq)因为以下两点原因才打败了icq:1)qq的消息投递可靠(消息不丢失,不重复)2)qq的垃圾消息少(它antispam做得好,这也是一个难点,但不是本文重点讨论的内容)今天,本文将用十分通俗的语言,来讲述webim系统中消息可靠性的问题. 一.报文类型im的客户端与服务器通过发送报文(也就是请求包)来完成消息的传递,报文分为三种,请求报文(request,后简称为为R),应答报文(acknowledge…
  消息的可靠性,即消息的不丢失和不重复,是im系统中的一个难点.当初qq在技术上(当时叫oicq)因为以下两点原因才打败了icq:1)qq的消息投递可靠(消息不丢失,不重复)2)qq的垃圾消息少(它antispam做得好,这也是一个难点,但不是本文重点讨论的内容)今天,本文将用十分通俗的语言,来讲述webim系统中消息可靠性的问题. 一.报文类型im的客户端与服务器通过发送报文(也就是请求包)来完成消息的传递,报文分为三种,请求报文(request,后简称为为R),应答报文(acknowled…
上一篇最后提到了mandatory这个参数,对于设置mandatory参数个人感觉还是很重要的,尤其在RabbitMQ镜像队列发生故障转移时. 模拟个测试环境如下: 首先在集群队列中增加两个镜像队列的策略: 对于ha-promote-on-shutdown这个参数,可以参考文档,其作用就是当集群中master出现故障时强制进行故障转移从而选出新的master节点,这里的master出现故障表示的是人为的故障比如通过命令行rabbitmqctl.bat start_app之类的关闭RabbitMQ…
消息发布者向RabbitMQ进行消息投递时默认情况下是不返回发布者该条消息在broker中的状态的,也就是说发布者不知道这条消息是否真的抵达RabbitMQ的broker之上,也因此会发生消息丢失的情况. 对此,RabbitmQ提供了两种解决方案(以官方提供的SDK为例) 1.通过AMOP提供的事务机制: C#代码: try { channel.TxSelect(); channel.BasicPublish("yu.exchange", "yu.1", props…
消息如何保障100%的投递成功? 什么是生产端的可靠性投递? 保障消息的成功发出 保障MQ节点的成功接收 发送端收到MQ节点(Broker)确认应答 完善的消息进行补偿机制(如网络问题没有返回确认应答) 生产端的可靠性投递(一) BAT/TMD互联网大厂的解决方案:(根据业务和并发量来选择) 消息落库,对消息状态进行打标(进行变更消息状态) 消息的延迟投递,做二次确认,回调检查 第一步进行数据的落库存储(持久化成功)保存状态,第二步发送消息,Broker收到消息, 第三步将受到的结果应答给生产端…
说明 上一篇文章里,我们了解了如何保证消息被可靠投递到RabbitMQ的交换机中,但还有一些不完美的地方,试想一下,如果向RabbitMQ服务器发送一条消息,服务器确实也接收到了这条消息,于是给你返回了ACK确认消息,但服务器拿到这条消息一看,找不到路由它的队列,于是就把它丢进了垃圾桶,emmm,我猜应该属于可回收垃圾. 如何让消息可靠投递到队列 如果你对上面的描述还不是很清楚,那我再用代码来说明一次. 在仅开启了生产者确认机制的情况下,交换机接收到消息后,会直接给消息生产者发送确认消息,如果发…
说明 前几天,突然发生线上报警,钉钉连发了好几条消息,一看是RabbitMQ相关的消息,心头一紧,难道翻车了? [橙色报警] 应用[xxx]在[08-15 16:36:04]发生[错误日志异常],alertId=[xxx].由[org.springframework.amqp.rabbit.listener.BlockingQueueConsumer:start:620]触发. 应用xxx 可能原因如下 服务名为:  异常为:org.springframework.amqp.rabbit.lis…
RabbitMQ 可靠投递 标签: RabbitMQ shovel-plugin ConfirmCallback RabbitMQ消息投递 背景 confirmCallback 确认模式 returnCallback 未投递到 queue 退回模式 shovel-plugin 跨机房可靠投递 背景 在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景.RabbitMQ 为我们提供了两个选项用来控制消息的投递可靠性模式. rabbitmq 整个消息投递的路径为: p…