Spring integration spring集成kafka xml多个主题不起作用
如果XML文件中只定义了一个主题,那么我的项目就可以正常工作。当我尝试添加另一个主题时,它无法生成任何主题的消息。 我的XML文件如下所示:Spring integration spring集成kafka xml多个主题不起作用,spring-integration,Spring Integration,如果XML文件中只定义了一个主题,那么我的项目就可以正常工作。当我尝试添加另一个主题时,它无法生成任何主题的消息。 我的XML文件如下所示: <int-kafka:producer-configurations> <int-kafka:producer-configuration broker-list="127.0.0.1:9092" topic="test" key-cla
<int-kafka:producer-configurations>
<int-kafka:producer-configuration broker-list="127.0.0.1:9092"
topic="test"
key-class-type="java.lang.String"
value-class-type="java.lang.String"
value-encoder="encoder"
key-encoder="encoder"
compression-type="none"
/>
<int-kafka:producer-configuration broker-list="127.0.0.1:9092"
topic="test2"
key-class-type="java.lang.String"
value-class-type="java.lang.String"
value-encoder="encoder"
key-encoder="encoder"
compression-type="none"
/>
</int-kafka:producer-configurations>
任何知道我的问题的人都会帮上大忙,谢谢。看来你没有提供任何关于要转到哪个主题的信息 当只有一个主题时,在这种情况下,将使用它 如果有多个,您将得到一个异常:
throw new IllegalStateException("Could not send messages as there are multiple producer configurations " +
"with no topic information found from the message header.");
默认情况下,适配器将在kafka_topic
消息头中查找要路由到的主题
您还可以提供
主题表达式
,例如topic expression=“headers['foo']”
,主题将从foo
标题中获取。这就是问题所在,如果我提供“topic='test',”我现在可以为主题“test”生成消息。但是,如果我想同时生成“test”和“test2”,那也没用。我正在考虑使用“主题表达”,我尝试了你的例子,但没有奏效。。顺便问一下,我遗漏了什么细节吗?我的生产者是这样的:channel.send(MessageBuilder.withPayload('test-message').setHeader(“messageKey”,“key”).setHeader(“topic”,“test”).build()topic expression=“headers['topic']
应该可以工作。如果使用setHeader(“kafka\u topic”,“test”)
,则不需要topic
或topic expression
。消息键头需要是setHeader(“kafka\u messageKey”,“key”)
除非您有一个表达式键表达式
。看起来您使用的是0.5中的旧标题名称;它们在1.0中被更改为带有卡夫卡前缀,以与框架的其余部分保持一致,并避免与其他模块的标题冲突。感谢Gary,您的回答完美地解决了我的问题,在rE通过编写消息标题和主题表达式,“我的卡夫卡”现在可以生成和使用多个主题消息。很好。如果某个答案解决了您的问题,这里通常会将其标记为“已接受”(左侧投票计数器下方的勾号/复选标记)。这将帮助其他用户搜索类似的答案。