2014-12-05 110 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