对于最新稳定版本,请使用 Spring Integration 7.0.0spring-doc.cadn.net.cn

消息处理建议

正如本节引言所述,请求处理程序建议链中的建议对象仅应用于当前端点,而非下游流(如果有的话)。 为消息处理器产生回复的对象(例如扩展对象)摘要回复制作消息处理器),建议应用于内部方法:handleRequestMessage()(从中MessageHandler.handleMessage()). 对于其他消息处理者,建议适用于MessageHandler.handleMessage().spring-doc.cadn.net.cn

在某些情况下,即使消息处理器是摘要回复制作消息处理器,建议必须应用于handleMessage方法。 例如,幂冪元接收者可能会返回,如果操作员的回复必需属性设置为true. 另一个例子是BoundRabbit频道建议——参见严格消息排序spring-doc.cadn.net.cn

从4.3.1版本开始,一个新的HandleMessageAdvice接口及其基础实现(摘要 HandleMessageAdvice)已经被引入。建议实现的对象HandleMessageAdvice总是应用于handleMessage()方法,无论处理器类型如何。spring-doc.cadn.net.cn

重要的是要明白HandleMessageAdvice实现(如幂等接收器)在应用于返回响应的处理程序时,与建议链并且正确应用于MessageHandler.handleMessage()方法。spring-doc.cadn.net.cn

由于这种分离,咨询链订单不会被执行。

考虑以下构型:spring-doc.cadn.net.cn

<some-reply-producing-endpoint ... >
    <int:request-handler-advice-chain>
        <tx:advice ... />
        <ref bean="myHandleMessageAdvice" />
    </int:request-handler-advice-chain>
</some-reply-producing-endpoint>

在前面的例子中,<tx:建议>应用于摘要回复ProducingMessageHandler.handleRequestMessage(). 然而我的HandleMessage建议应用于MessageHandler.handleMessage(). 因此,它在<tx:建议>. 要保持顺序,你应遵循标准的 Spring AOP 配置方法,使用端点身份证。处理器后缀以获得目标消息处理器豆。 注意,在这种情况下,整个下游流程都在交易范围内。spring-doc.cadn.net.cn

消息处理器该请求不会返回回复,建议链顺序会被保留。spring-doc.cadn.net.cn

从5.3版本开始,HandleMessageAdviceAdapter提供用于应用任意拦截方法对于MessageHandler.handleMessage()方法,因此也包括整个子流。 例如,一个重试拦截行动可以应用于从某个端点开始的整个子流;默认情况下这是不可能的,因为消费者端点只对摘要回复ProducingMessageHandler.RequestHandler.handleRequestMessage().spring-doc.cadn.net.cn