2014-12-05 112 views
3

我使用Spring Integration和java dsl規範來實現我的IntegrationFlow。 我想用一個自定義標題富集一些文件名添加到頭部,這將是這樣的:Headerenricher Spring集成和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

你可以讓你的FileHeaderNamingEnricher延伸AbstractReplyProducingMesageHandler(把你的代碼放在handleRequestMessage())。

或者,執行GenericHandler<T>(其handle方法獲取有效負載和標題作爲參數並可以返回消息)。

然後使用.handle方法...

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

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

,我怎麼能在我的FileHeaderNamingEnricher訪問有效載荷並設置標題? – wadi3 2014-12-05 14:08:00

+1

'AbstractReplyProducingMesageHandler.handleRequestMessage(消息消息)'''handleRequestMessage'方法獲取消息並返回一個對象(它也可以是一個'Message '這樣的代碼就可以在上面。 – 2014-12-05 14:21:17

+0

謝謝你解決我的問題,我看到我也可以實現GenericHandler。 – wadi3 2014-12-05 14:23:05