各トランザクションで余分なヘッダを追加するすべてのトランザクションを追跡しようとしていますが、これらの余分なヘッダは要求と応答でうまく動作しますが、Spring Integration DSLでのエラー処理にメッセージヘッダが含まれていない
これは私がinboundGateway
ためerrorChannel
を使用してもmappedReplyHeaders
とmappedRequestHeaders
を使用しています(春の統合DSLとJava 1.7で)私の設定
@Bean
public IntegrationFlow inboundFlow() {
return IntegrationFlows.from(Amqp.inboundGateway(simpleMessageListenerContainer())
.mappedReplyHeaders(AMQPConstants.AMQP_CUSTOM_HEADER_FIELD_NAME_MATCH_PATTERN)
.mappedRequestHeaders(AMQPConstants.AMQP_CUSTOM_HEADER_FIELD_NAME_MATCH_PATTERN)
.errorChannel(gatewayErrorChannel())
.requestChannel(gatewayRequestChannel())
.replyChannel(gatewayResponseChannel())
)
.transform(getCustomFromJsonTransformer())
.route(new HeaderValueRouter(AMQPConstants.OPERATION_ROUTING_KEY))
.get();
}
@Bean
public MessageChannel gatewayRequestChannel() {
return MessageChannels.direct().get();
}
@Bean
public MessageChannel gatewayResponseChannel() {
return MessageChannels.publishSubscribe().get();
}
@Bean
public MessageChannel gatewayErrorChannel() {
return MessageChannels.publishSubscribe().get();
}
@Bean
public IntegrationFlow responseTrackerOutboundFlow() {
return trackerOutboundFlowTemplate(gatewayResponseChannel());
}
@Bean
public IntegrationFlow errorTrackerOutboundFlow() {
return trackerOutboundFlowTemplate(gatewayErrorChannel());
}
private IntegrationFlow trackerOutboundFlowTemplate(MessageChannel fromMessageChannel) {
return IntegrationFlows.from(fromMessageChannel)
.handle(Amqp.outboundAdapter(new RabbitTemplate(getConnectionFactory()))
.exchangeName(LOGGER_EXCHANGE_NAME)
.routingKey(LOGGER_EXCHANGE_ROUTING_KEY)
.mappedRequestHeaders("*"))
.get();
}
あり、それはerrorChannel
のヘッダーを持つことは可能でしょうか?マップされたエラーヘッダーなどを設定する方法はありますか?
ありがとう、それは働いた! – jcastaneyra