此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

当连接工厂配置为发布服务器确认和返回时,上述部分将讨论消息通道的配置,以异步接收确认和返回。 从版本 5.4 开始,有一个通常更易于使用的附加机制。Spring中文文档

在这种情况下,请勿配置 或 确认和返回通道。 相反,请在标头中添加一个实例;然后,您可以稍后通过检查已发送消息的实例中的未来状态来等待结果。 在将来完成之前,将始终填充该字段(如果返回消息)。confirm-correlation-expressionCorrelationDataAmqpHeaders.PUBLISH_CONFIRM_CORRELATIONCorrelationDatareturnedMessageSpring中文文档

CorrelationData corr = new CorrelationData("someId"); // <--- Unique "id" is required for returns
someFlow.getInputChannel().send(MessageBuilder.withPayload("test")
        .setHeader("rk", "someKeyThatWontRoute")
        .setHeader(AmqpHeaders.PUBLISH_CONFIRM_CORRELATION, corr)
        .build());
...
try {
    Confirm Confirm = corr.getFuture().get(10, TimeUnit.SECONDS);
    Message returned = corr.getReturnedMessage();
    if (returned !- null) {
        // message could not be routed
    }
}
catch { ... }

为了提高性能,您可能希望发送多条消息并等待确认,而不是一次发送一条。 返回的消息是转换后的原始消息;您可以使用所需的任何其他数据对 A 进行子类。CorrelationDataSpring中文文档