如何使用 kafka 流在 kafka 中进行请求响应?
Posted
技术标签:
【中文标题】如何使用 kafka 流在 kafka 中进行请求响应?【英文标题】:How to do request-response in kafka with kafka stream? 【发布时间】:2020-04-19 05:19:15 【问题描述】:我想用kafka流实现请求-响应模式,我使用spring boot kafka,它添加一些数据作为header,命名为correlation id,但是当kafka流API处理请求消息时,header数据会丢失,可以'不要发送到响应主题! 我该如何解决它,或者使用其他方法??
【问题讨论】:
表头数据是如何“丢失”的? Kafka 本身不仅会丢失部分消息负载。您(或 Spring Boot)将该标题放在哪里? 否,在 kafka 流中进行了一些重新分区操作,然后标头丢失 @zydzjy 为什么不尝试将标头放入 kafka 消息负载中?你使用了什么样的操作符导致重新分区? @TuyenLuong 我使用spring boot kafkaTemplate,它使用correlationId作为消息头,处理器包括重新分区操作no,some re-partition operation in kafka stream,then header lost
-- 你用的是什么版本? Kafka Streams 支持 v2.0
(cf ***.com/questions/46736484/…) 的标头——但我不确定你想要实现什么。 Kafka Streams 是为流处理而构建的,而不是 req/resp:你们中的意思是您的请求是输入主题中的消息,并且您对输出主题产生响应(这应该可以,但我不会称其为 req/resp模式;那是真正的流处理)。
【参考方案1】:
对于(201, accepted)
以外的请求,您不会得到响应
数据会丢失
不,不会
无法发送到响应主题!
为什么不呢?
我该如何解决,或者使用其他方法??
使用 WebSockets 获取您的响应。
您可能想观看这个使用多个 Spring 应用程序的演讲。
https://www.confluent.io/kafka-summit-lon19/hello-streams-introducing-the-first-streams-mindset/
【讨论】:
以上是关于如何使用 kafka 流在 kafka 中进行请求响应?的主要内容,如果未能解决你的问题,请参考以下文章