consumer消费消息后,如何准确回包

简介: consumer消费消息后,如何准确回包

consumer消费消息后,如何准确回包
(1)producer在发送消息的时候,会给每条消息生成唯一的标识符,同时还带上了producer的clientId。当consumer收到并消费消息后,从消息中取出消息的标识符correlationId和producer的标识符clientId,放入响应消息,用来确定此响应消息是哪条请求消息的回包,以及此响应消息应该发给哪个producer。同时响应消息中设置了消息的类型以及响应消息的topic,然后consumer将消息发给broker,如下图所示。

(2)broker收到响应消息后,需要将消息发回给指定的producer。Broker如何知道发回给哪个producer?因为消息中包含了producer的标识符clientId,在ProducerManager中,维护了标识符和channel信息的对应关系,通过这个对应关系,就能把回包发给对应的producer。

响应消息发送和一般的消息发送流程区别在于,响应消息不需要producer拉取,而是由broker直接推给producer。同时选择broker的策略也有变化:请求消息从哪个broker发过来,响应消息也发到对应的broker上。

Producer收到响应消息后,根据消息中的唯一标识符,从RequestResponseFuture的map中找到对应的RequestResponseFuture结构,设置响应消息,同时计数器减一,解除等待状态,使请求方收到响应消息。

目录
相关文章
|
消息中间件 RocketMQ 存储
RocketMQ消费失败消息深入分析(consumer,broker的具体处理逻辑)
消息队列是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题
3318 0
|
消息中间件 NoSQL Redis
|
消息中间件 RocketMQ 开发者
消息消费初探|学习笔记
快速学习消息消费初探
消息消费初探|学习笔记
|
消息中间件 NoSQL Redis
消息重复消费的问题
消息重复消费的问题
|
消息中间件 Kafka 测试技术
MQ 学习日志(七) 保证消息消费的顺序性
保证消息消费的顺序性
212 0
|
消息中间件 负载均衡 Java
消息消费基本流程|学习笔记
快速学习消息消费基本流程
105 0
|
消息中间件 存储 安全
RocketMQ-消息消费模式 顺序消费
RocketMQ-消息消费模式 顺序消费
246 0
|
消息中间件 缓存 网络协议
多图详解kafka生产者消息发送过程
今天我们来通过源码来分析一下,生产者发送一条消息的所有流程~~~ 生产者客户端代码
多图详解kafka生产者消息发送过程
|
消息中间件 存储 NoSQL
该如何保证消息不被重复消费
该如何保证消息不被重复消费
233 0

热门文章

最新文章