MutableMessageBuilderFactory в Spring Integration - PullRequest
3 голосов
/ 14 января 2020

У меня есть потребитель весеннего облачного потока, получающий сообщения от Кафки. Я хочу изменить заголовки сообщений, но в настоящее время полученное сообщение имеет тип GenericMessage.

Я видел это сообщение и этот код из ядра интеграции пружины поэтому я добавил в свою конфигурацию компонент типа MutableMessageBuilderFactory, но я все еще получаю сообщение как GenericMessage. На самом деле, код создания бина даже не вызывается, getMessageBuilderFactory(BeanFactory beanFactory) в IntegrationUtils classs вызывается несколько раз, и каждый раз beanFactory.getBean("messageBuilderFactory", MessageBuilderFactory.class) возвращает DefaultMessageBuilderFactory.

Что может быть причиной проблемы фабрика, которую я определил как bean-компонент «не работать», и сообщение о том, что оно продолжает поступать, GenericMessage?

Версии Spring:

  • spring-boot: 1.5.21
  • пружинная интеграция: 4.3.12

1 Ответ

2 голосов
/ 14 января 2020

Сообщения являются неизменными, и для этого есть много причин, но это выходит за рамки этого вопроса. Что вы можете сделать, это создать новое сообщение в вашем обработчике и вернуть его. Если вы хотите скопировать большую часть предыдущего сообщения, а затем изменить заголовок, вы можете сделать это:

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