簡體   English   中英

如何在Spring Integration DSL中基於消息ID豐富消息頭?

[英]How to enrich message header based on message id in spring integration DSL?

我的集成看起來像這樣:

@Bean
public IntegrationFlow integrationFlow() {
    return IntegrationFlows.from(Http.inboundGateway("/spring_integration_post")
            .requestMapping(m -> m.methods(HttpMethod.POST))
            .requestPayloadType(String.class))
            .enrich(enricherSpec -> {
                enricherSpec.header("correlationId", 1); //or ackCorrelationId ?
            })
            .split(s -> s.applySequence(false).get().getT2().setDelimiters(","))
            .log()
            .log()
            .handle(Amqp.outboundAdapter(amqpTemplate())
                    .exchangeName("barrierExchange")
                    .routingKey("barrierKey"))
            .get();
}

如您所見,我在這里有濃縮器:

.enrich(enricherSpec -> {
                    enricherSpec.header("correlationId", 1);
})

現在,它添加具有常量值1標頭correlationId 但是我想復制messageId( idcorrelationId 我不知道如何使用DSL實現它。

我發現工作的XML替代:

  <int:header-enricher input-channel="receiveChannel" output-channel="processChannel">
        <int:header name="ackCorrelation" expression="headers['id']" />
    </int:header-enricher>

如何使用Java DSL執行相同的操作?

您為什么不閱讀文檔-使用Java DSL和javadocs 配置Header Enricher,而不是繼續在此處提問。 您將更快地取得進展。

我們沒有時間繼續回答文檔中已經涵蓋的瑣碎問題; 我們的時間最好花在改進框架上。

文檔中的示例:

@Bean
public IntegrationFlow enrichHeadersInFlow() {
    return f -> f
                ...
                .enrichHeaders(h -> h.header("emailUrl", this.emailUrl)
                                     .headerExpression("from", "payload.from[0].toString()"))
                .handle(...);
}

在您的情況下enricherSpec.headerExpression("ackCorrelation", "headers['id']")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM