繁体   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