Ниже приведены фрагменты кода, в которых я пытаюсь обработать ошибку.
<int:channel id="errorGateWayChannel"></int:channel>
<int:service-activator ref="errorHandler"
input-channel="errorGateWayChannel" />
...
<int:service-activator.. />
<int-http:outbound-gateway ..>
<int:channel id="routerInputChannel">
<int:dispatcher task-executor="sharedPool"/></int:channel>
<int:header-enricher input-channel="routerInputChannel" output-channel="routerInputChannel1">
<int:error-channel ref="errorGateWayChannel"/>
</int:header-enricher>
<int:recipient-list-router input-channel="routerInputChannel1"
default-output-channel="nullChannel">
<int:recipient channel="datasetInputChannel"/>
</int:recipient-list-router>
<int:service-activator id="datasetInputChannelSA" input-channel="datasetInputChannel"/> <!-- now this service activator giving me error -->
Теперь, если активатор службы «datasetInputChannelSA» выдает какое-либо исключение, я получаю WARN, и это не распространяется на канал ошибки.
WARN org.springframework.messaging.core.GenericMessagingTemplate $ TemporaryReplyChannel - получено ответное сообщение, но получающий поток уже получил ответ: ErrorMessage [payload = org.springframework.messaging.MessageHandlingException: исключение nested.lang.RuntimeException:
Я вижу похожие потоки, где они получают предупреждение, но не нашли, как с этим справиться.
Обновление: После предоставления overwrite = "true" в "int: error-channel" оно работает и решает мою проблему.
<int:error-channel ref="errorGateWayChannel"/>
to
<int:error-channel ref="errorGateWayChannel" overwrite="true"/>