它应该按你的需要工作;之前的例外 throttlerChannel 将被直接抛给来电者;该信道之后的异常将由轮询器的错误处理程序发送到网关。
throttlerChannel
也许你的网关超时太短了?
打开DEBUG日志记录并跟踪消息流应该可以帮助您进行调试。
的 编辑 强>
你可以修复失踪 failedMessage 通过向Tcp出站网关添加此类型的bean <int-ip:request-handler-advice-chain /> ...
failedMessage
<int-ip:request-handler-advice-chain />
public class FailedMessagePopulator extends AbstractRequestHandlerAdvice { @Override protected Object doInvoke(ExecutionCallback callback, Object target, Message<?> message) throws Exception { try { return callback.execute(); } catch (MessagingException e) { if (e.getFailedMessage() == null) { throw new MessageHandlingException(message, e.getMessage(), e); } else { throw e; } } catch (Exception e) { throw new MessageHandlingException(message, e.getMessage(), e); } } }
请注意,您需要将错误通道添加到 <gateway/> 因为轮询器现在将看到失败的消息并将异常发送回网关以进行错误处理。
<gateway/>