首页 > 解决方案 > Spring 集成中的 MutableMessageBuilderFactory

问题描述

我有一个春季云流消费者从 Kafka 获取消息。我想修改消息头,但目前我收到的消息是GenericMessage.

我从 spring integration core中看到了这篇文章和这段代码,所以我在我的配置中添加了一个类型的 bean,但我仍然收到消息为. 实际上,创建 bean 的代码甚至似乎都没有被调用,in类被多次调用并且每次都返回。MutableMessageBuilderFactoryGenericMessagegetMessageBuilderFactory(BeanFactory beanFactory)IntegrationUtilsbeanFactory.getBean("messageBuilderFactory", MessageBuilderFactory.class)DefaultMessageBuilderFactory

可能是什么问题导致我定义为 bean 的工厂无法工作并且消息不断出现GenericMessage

春季版本:

标签: apache-kafkaspring-integrationspring-cloud-stream

解决方案


消息是不可变的,这有很多原因,但这超出了这个问题的范围。您可以做的是在您的处理程序中创建一个新消息并返回它。如果您想复制大部分以前的消息,然后修改标题,您可以这样做:

Message resultMessage = MessageBuilder.fromMessage(sourceMessage).setHeader("myExistingHeader", "foo").build();

推荐阅读