Spring集成中的MutableMessageBuilderFactory

问题描述 投票:2回答:1

我有一个春季云流消费者,从卡夫卡那里获取消息。我想修改消息头,但当前收到的消息类型为GenericMessage

我看到了this postthis code from spring integration core,所以我在配置中添加了一个MutableMessageBuilderFactory类型的Bean,但仍收到消息GenericMessage。实际上,bean创建代码甚至似乎都没有被调用,getMessageBuilderFactory(BeanFactory beanFactory)类中的IntegrationUtils被调用多次,并且每次beanFactory.getBean("messageBuilderFactory", MessageBuilderFactory.class)返回DefaultMessageBuilderFactory

导致我定义为bean的工厂无法工作并且消息继续显示为GenericMessage的原因可能是什么?

春季版本:

  • spring-boot:1.5.21
  • spring-integration:4.3.12
apache-kafka spring-integration spring-cloud-stream
1个回答
0
投票

消息是不可变的,并且有很多原因,但这超出了这个问题的范围。您可以做的是在处理程序中创建一个新的Message并将其返回。如果要复制大部分先前的消息,然后修改标题,则可以执行以下操作:

Message resultMessage = MessageBuilder.fromMessage(sourceMessage).setHeader("myExistingHeader", "foo").build();
© www.soinside.com 2019 - 2024. All rights reserved.