【问题标题】:Headerenricher Spring Integration and java dslHeaderenricher Spring 集成和 java dsl
【发布时间】:2015-02-03 13:12:08
【问题描述】:

我正在使用 Spring Integration 和 java dsl 规范来实现我的 IntegrationFlow。 我想使用自定义标题丰富器将一些文件名添加到标题中,它将类似于:

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
    }

谁能帮帮我?

【问题讨论】:

    标签: java spring spring-integration dsl


    【解决方案1】:

    您可以让您的FileHeaderNamingEnricher 扩展AbstractReplyProducingMesageHandler(将您的代码放入handleRequestMessage())。

    或者,实现GenericHandler&lt;T&gt;(它的handle方法获取payload和headers作为参数,可以返回消息)。

    然后使用.handle方法...

     ...
     .handle(myEnricher())
     ...
    
     @Bean
     public void MessageHandler myEnricher() {
        return new FileHeaderNamingEnricher();
     }
    

    【讨论】:

    • 以及如何访问 FileHeaderNamingEnricher 中的有效负载并设置标头?
    • AbstractReplyProducingMesageHandler.handleRequestMessage(Message&lt;?&gt; message) - handleRequestMessage 方法获取消息并返回一个对象(也可以是Message&lt;?&gt;。所以正是您上面的代码。
    • 谢谢你解决了我的问题,我看到我也可以实现GenericHandler。
    • 是的;将其添加到答案中。
    • 先生,但是我们不能使用 .enrichHeaders() api 调用来放置一个键(字符串),并使用 List 作为值将其放入标题中吗?
    猜你喜欢
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多