2014-12-05 1 views
3

Я использую Spring Integration и спецификации java dsl для реализации моего IntegrationFlow. Я хочу использовать обогатитель пользовательского заголовка, чтобы добавить некоторые имена файлов в заголовок, это будет что-то вроде:Headerenricher Spring Integration и java dsl

public class FileHeaderNamingEnricher { 
    public Message<File> enrichHeader(Message<File> fileMessage) { 
      // getting some details fom the database ... 
      return messageBuilder 
        .setHeader("filename", "somestuff") 
        .build(); 
     } 
} 

И мое Интегрирования потока будет выглядеть следующим образом:

public IntegrationFlow myflow() { 
     return IntegrationFlows.from("input") 
           .enrich // here I want to enrich the header using my class 
    } 

Может ли один помочь мне с этим, пожалуйста?

ответ

2

Вы можете продлить FileHeaderNamingEnricherAbstractReplyProducingMesageHandler (введите код в handleRequestMessage()).

Или, реализовать GenericHandler<T> (его метод handle получает полезную нагрузку и заголовки в качестве параметров и может возвращать сообщение).

Затем используйте метод .handle ...

... 
.handle(myEnricher()) 
... 

@Bean 
public void MessageHandler myEnricher() { 
    return new FileHeaderNamingEnricher(); 
} 
+0

и как я могу получить доступ к полезной информации в моем FileHeaderNamingEnricher и установить заголовок? – wadi3

+1

'AbstractReplyProducingMesageHandler.handleRequestMessage (Message message)' - метод 'handleRequestMessage' получает сообщение и возвращает объект (который также может быть« Message '. Так точно код, который у вас выше. –

+0

Спасибо, что решила моя проблема , Я видел, что я также могу реализовать GenericHandler. – wadi3