如何在http出站网关上动态附加重试建议?

时间:2016-02-19 09:19:58

标签: java spring spring-integration

嘿,我有一个http出站网关,我已经附加了重试建议:

.handle(Http.outboundGateway(spelParser.parseExpression("headers." + HeaderKeys.TARGET_ENDPOINT))
            .extractPayload(true)
            .httpMethod(HttpMethod.POST)
            .expectedResponseType(String.class)
            .requestFactory(requestFactory())
            .get()
        , httpOutboundEndpointSpec())

httpOutboundEndpointSpec

@Bean 
public Consumer<GenericEndpointSpec<HttpRequestExecutingMessageHandler>> httpOutboundEndpointSpec() {
    return new Consumer<GenericEndpointSpec<HttpRequestExecutingMessageHandler>>() {
        @Override
        public void accept(GenericEndpointSpec<HttpRequestExecutingMessageHandler> spec) {
            spec.advice(context.getBean("lengthy", RequestHandlerRetryAdvice.class));
            spec.requiresReply(true);
        }
    };
}

有没有办法根据邮件内容动态地连接建议?不同的客户现在需要不同的退避间隔。我可以为每个客户端编写一个出站网关,每个都有不同的重试建议,但这会产生很多网关。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案可能是custom advice,其中包含一组RetryTemplate并根据消息使用其中一个。

您可以根据建议并选择要使用的重试模板。