![](/img/trans.png)
[英]How to send message to the rabbitmq queue using spring integration java DSL
[英]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( id
) correlationId
。 我不知道如何使用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.