我有一个春季云流消费者,从卡夫卡那里获取消息。我想修改消息头,但当前收到的消息类型为GenericMessage
。
我看到了this post和this code from spring integration core,所以我在配置中添加了一个MutableMessageBuilderFactory
类型的Bean,但仍收到消息GenericMessage
。实际上,bean创建代码甚至似乎都没有被调用,getMessageBuilderFactory(BeanFactory beanFactory)
类中的IntegrationUtils
被调用多次,并且每次beanFactory.getBean("messageBuilderFactory", MessageBuilderFactory.class)
返回DefaultMessageBuilderFactory
。
导致我定义为bean的工厂无法工作并且消息继续显示为GenericMessage
的原因可能是什么?
春季版本:
消息是不可变的,并且有很多原因,但这超出了这个问题的范围。您可以做的是在处理程序中创建一个新的Message并将其返回。如果要复制大部分先前的消息,然后修改标题,则可以执行以下操作:
Message resultMessage = MessageBuilder.fromMessage(sourceMessage).setHeader("myExistingHeader", "foo").build();