当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Cloud Stream在发布到Kafka主题之前给消息添加标题

萧芷阳
2023-03-14

我刚刚意识到,一旦在 Kafka 主题上收到的消息会丢失标题。有没有办法在将消息发布到 Kafka 主题然后在消费者处阅读之前向消息添加标头?我正在使用Java 11,Spring Cloud Hoxton.SR6,Spring 2.2.4,kafka_2.13-2.6.0。提前感谢!

共有1个答案

储仲渊
2023-03-14

我觉得发布问题有点太早了。这很简单。从HttpServletRequest或HttpRequest(spring)获取请求头,然后在写入MessageChannel时,在传递头时调用CopyHeaders方法。您也可以跳过不需要的部分。在使用者处,获取包含所有标头的Message对象,而不是自定义对象

Producer MessageBuilder.withPayload(message).copyHeaders(headersMap).build();消费者进程消息(消息)

 类似资料:
  • 我有一个用例“XML文件==>Kafka主题==>Build REST API to Query”来自Kafka主题的数据。我熟悉将数据转换为Avro格式,并编写到kafka主题。 您能建议如何发布XML吗?

  • 我已经设置了kafka客户端,它可以产生和消费消息,当我们把有效载荷从生产者发送到主题时,它可以正常工作,所以我有问题生产者现在第一个消息我可以发送到主题,我也可以从kafka主题中消费,现在我尝试发送第二个消息,但是消费者没有从kafka主题中读取第二个消息,知道这里发生了什么吗? Producer.js consumer.js

  • 是否可以验证/筛选发送到Kafka主题的消息?

  • 我创建了一个制作人和一个消费者,使用“Kafka节点”包发送和消费Kafka主题的消息。生产者和消费者通过API进行调用。POST方法用于向主题发送消息,而GET方法用于在消费者处从主题获取消息。 当我向KAFKA发送消息后调用consumer API时,之前的所有消息都会在。 我只需要最后一条消息,这是生产者发送的。 如何在不使用任何数组或任何东西的情况下获取最后一条消息。 有没有办法删除这个话

  • 我有一个用例: 我需要定期阅读和汇总Kafka主题的信息,并发布到不同的主题。本地存储不是一个选项。这就是我计划解决这个问题的方式,欢迎提出任何改进建议 为了安排Kafka消息的聚合和发布,计划使用聚合器EIP的completionInterval选项。这是代码。 路线是:

  • 在附加新主题的消费者之前,我创建新主题并在apache Kafka中生成第一条消息。然后附加新主题的消费者,但第一条消息无法消费。为什么..? 这是我的测试用例。 但在附加了新主题的消费者后,我会生成第二条消息,然后再正常消费。