【问题标题】:How to do request-response in kafka with kafka stream?如何使用 kafka 流在 kafka 中进行请求响应?
【发布时间】: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 stackoverflow.com/questions/46736484/…) 的标头——但我不确定你想要实现什么。 Kafka Streams 是为流处理而构建的,而不是 req/resp:你们中的意思是您的请求是输入主题中的消息,并且您对输出主题产生响应(这应该可以,但我不会称其为 req/resp模式;那是真正的流处理)。

标签: spring-boot apache-kafka apache-kafka-streams


【解决方案1】:

对于(201, accepted)以外的请求,您不会得到响应

数据会丢失

不,不会

无法发送到响应主题!

为什么不呢?

我该如何解决,或者使用其他方法??

使用 WebSockets 获取您的响应。

您可能想观看这个使用多个 Spring 应用程序的演讲。

https://www.confluent.io/kafka-summit-lon19/hello-streams-introducing-the-first-streams-mindset/

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 2021-11-19
    • 1970-01-01
    • 2014-04-11
    • 2020-03-28
    • 2020-07-29
    相关资源
    最近更新 更多