当前位置: 首页 > 面试题库 >

可以使用Kafka Streams访问消息头吗?

云霖
2023-03-14
问题内容

由于增加了头的记录(ProducerRecord&ConsumerRecord)在卡夫卡0.11,是有可能处理与卡夫卡流的话题时,得到这些标题?当调用类似mapon的方法时,KStream它提供记录的key和的参数,value但是我看不到访问的方法headers。如果我们可以刚好map超过ConsumerRecords
,那就太好了。

例如

KStreamBuilder kStreamBuilder = new KStreamBuilder();
KStream<String, String> stream = kStreamBuilder.stream("some-topic");
stream
    .map((key, value) ->  ... ) // can I get access to headers in methods like map, filter, aggregate, etc?
    ...

这样的事情会工作:

KStreamBuilder kStreamBuilder = new KStreamBuilder();
KStream<String, String> stream = kStreamBuilder.stream("some-topic");
stream
    .map((record) -> {
        record.headers();
        record.key();
        record.value();
    })
    ...

问题答案:

自Streams API
2.0版以来,可以访问记录头。(有关详细信息,请参见KIP-244。)

可以通过处理器API访问记录的元数据(即,通过transform()transformValues()process()),通过给定的“上下文”对象(参见https://docs.confluent.io/current/streams/developer-
guide/processor-api.html #accessing-processor-
context
)。

在2.0之前的版本中,上下文仅公开主题,分区,偏移量和时间戳-而不公开那些旧版本中Streams在读取时实际上丢弃的标头。

但是,元数据在DSL级别上不可用。但是,也正在进行扩展DSL的工作:https
:
//cwiki.apache.org/confluence/display/KAFKA/KIP-159%3A+Introducing+Rich+functions+to+Streams



 类似资料:
  • 我正在用React和Redux构建一个前端应用程序,我正在使用axios来执行我的请求。我想访问响应标题中的所有字段。在我的浏览器中,我可以检查标头,我可以看到我需要的所有字段都存在(如令牌、uid等),但是当我调用时 我得到的只是 这里是“我的浏览器网络”选项卡,您可以看到所有其他字段都存在。 最好的。

  • 当Spring Boot应用程序(向RabbitMQ)发送消息时,我正在使用Spring Cloud Sleuth向zipkin发送跨度。 我想自定义发送到zipkin的信息,以包括一些额外的标签,这些标签是从传出消息的某些标题中填充的,例如下面的。 有可能用侦探/勇敢做到这一点吗?这感觉就像是注册(例如)一个类型为

  • 我有充分的证据表明,适用于子菜单(如弹出式上下文菜单或子级菜单)。它用于jQueryUISelectMenu,也用于这个伟大的示例。 我无法确定的是,是否适用于以下两个示例: 信息性弹出窗口,如引导窗口-用于上下文信息,但不包含任何链接

  • 我使用此代码登录到外部系统: 我收到一种LoginResponse,但它没有价值。 LoginResponse类型仅包含: 我需要从标头访问UserAuth值,但这不包含在LoginResponse对象中。 SOAP 响应为: 如何访问标题信息,在本例中是UserAuth值? 我是否需要使用更低层次的东西并从soap响应中解析所需的值? 更新: 我认为我需要使用SAAJ使用自定义SOAP请求(类似