我有以下结构:
Kafka的主题
Kafka接收器/源的模块
Kafka来源之后的模块。基本上是为了阅读Kafka的资料。
问题是,当kafka接收器向kafka队列发送事件,并且kafka源已接收到来自kafka主题的消息,然后,下一个模块尝试读取头时,它失败,因为找不到头。
我提出以下解决方案:将消息头 Package 到消息中,这样,内部有效负载将包含一个原始有效负载+消息头。
我还有别的选择吗?。
我有以下结构:
Kafka的主题
Kafka接收器/源的模块
Kafka来源之后的模块。基本上是为了阅读Kafka的资料。
问题是,当kafka接收器向kafka队列发送事件,并且kafka源已接收到来自kafka主题的消息,然后,下一个模块尝试读取头时,它失败,因为找不到头。
我提出以下解决方案:将消息头 Package 到消息中,这样,内部有效负载将包含一个原始有效负载+消息头。
我还有别的选择吗?。
1条答案
按热度按时间jhdbpxl91#
由于kafka本身不支持报头,因此kafka消息总线支持您所描述的确切机制—只是您必须选择要由总线传输的报头名称,以避免传输不需要的报头。
请参阅应用程序配置。
向下滚动到kafka消息总线属性。
要由总线传输的自定义标头的列表。
编辑
对于rabbit,默认情况下传输所有标头:
编辑
如果您的意思是希望使用相同的技术使用sink/source从kafka发送/接收数据,那么您可以使用xd的支持类来实现这一点-请参阅
EmbeddedHeadersMessageConverter
. 头值被编码为json。