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结构,设置响应消息,同时计数器减一,解除等待状态,使请求方收到响应消息。

目录
相关文章
|
6月前
|
消息中间件 RocketMQ
rocketmq 超过4M消息体怎么发送
rocketmq 超过4M消息体怎么发送
142 1
|
9月前
|
消息中间件 NoSQL Redis
消息重复消费的问题
消息重复消费的问题
|
8月前
|
消息中间件 弹性计算 Java
RocketMQ-没有消费者的消息堆积场景分析
RocketMQ-没有消费者的消息堆积场景分析
240 1
|
8月前
|
消息中间件 存储 安全
RocketMQ-消息消费模式 顺序消费
RocketMQ-消息消费模式 顺序消费
159 0
|
9月前
|
消息中间件 Kafka 测试技术
MQ 学习日志(七) 保证消息消费的顺序性
保证消息消费的顺序性
128 0
|
9月前
|
消息中间件 Kafka
Kafka消息的重复消费问题如何解决的 ?
Kafka 通过使用消费者组(Consumer Group)来解决消息的重复消费问题。
1177 0
|
10月前
|
消息中间件 存储 NoSQL
该如何保证消息不被重复消费
该如何保证消息不被重复消费
115 0
|
设计模式 安全
生产者与消费者模型
生产者与消费者模型
71 0
生产者与消费者模型
|
消息中间件 RocketMQ 开发者
消息消费初探|学习笔记
快速学习消息消费初探
63 0
消息消费初探|学习笔记
|
消息中间件 RocketMQ 开发者
消息消费方准备工作|学习笔记
快速学习消息消费方准备工作
73 0
消息消费方准备工作|学习笔记