Spring integration HttpRequestExecutingMessageHandler不工作的RequestHandlerRetryAdvice
我有下面的配置文件Spring integration HttpRequestExecutingMessageHandler不工作的RequestHandlerRetryAdvice,spring-integration,spring-retry,Spring Integration,Spring Retry,我有下面的配置文件 @Configuration @PropertySource({ "application.properties" }) @EnableIntegration @IntegrationComponentScan @EnableRetry public class IntegrationBeanConfiguration { @Bean public SimpleRetryPolicy retryPolicy(){ SimpleRetryPol
@Configuration
@PropertySource({ "application.properties" })
@EnableIntegration
@IntegrationComponentScan
@EnableRetry
public class IntegrationBeanConfiguration {
@Bean
public SimpleRetryPolicy retryPolicy(){
SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
retryPolicy.setMaxAttempts(5);
return retryPolicy;
}
@Bean
public FixedBackOffPolicy fixedBackOffPolicy(){
FixedBackOffPolicy p = new FixedBackOffPolicy();
p.setBackOffPeriod(1000);
return p;
}
@Bean
public RequestHandlerRetryAdvice retryAdvice(SimpleRetryPolicy retryPolicy, FixedBackOffPolicy fixedBackOffPolicy){
RequestHandlerRetryAdvice retryAdvice = new RequestHandlerRetryAdvice();
RetryTemplate retryTemplate = new RetryTemplate();
retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
retryAdvice.setRetryTemplate(retryTemplate);
return retryAdvice;
}
@Bean
@ServiceActivator(inputChannel="rtpRequestPostOperationRequestChannel")
public MessageHandler httResponseMessageHandler(MessageChannel rtpRequestPostOperationResponseChannel, HeaderMapper<HttpHeaders> headerMapper, RequestHandlerRetryAdvice retryAdvice) {
List<Advice> list = new ArrayList<>();
list.add(retryAdvice);
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler("https://myhost:8080/rtp/request");
handler.setHttpMethod(HttpMethod.POST);
handler.setHeaderMapper(headerMapper);
handler.setOutputChannel(rtpRequestPostOperationResponseChannel);
handler.setExpectedResponseType(RtpResponse.class);
handler.setAdviceChain(list);
return handler;
}
}
@配置
@PropertySource({“application.properties”})
@使能集成
@集成组件扫描
@启用重试
公共类集成Bean配置{
@豆子
公共简单政策retryPolicy(){
SimpleRetryPolicy retryPolicy=新的SimpleRetryPolicy();
retryPolicy.setMaxAttempts(5);
退货政策;
}
@豆子
public FixedBackOffPolicy FixedBackOffPolicy(){
FixedBackOffPolicy p=新的FixedBackOffPolicy();
p、 退避期(1000);
返回p;
}
@豆子
public RequestHandlerRetryAdvice retryAdvice(SimpleRetryPolicy retryPolicy、FixedBackOffPolicy FixedBackOffPolicy){
RequestHandlerRetryAdvice retryAdvice=新建RequestHandlerRetryAdvice();
RetryTemplate RetryTemplate=新RetryTemplate();
retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
setRetryTemplate(retryTemplate);
回复回复建议;
}
@豆子
@ServiceActivator(inputChannel=“rtpRequestPostOperationRequestChannel”)
public MessageHandler httResponseMessageHandler(MessageChannel rtpRequestPostOperationResponseChannel、HeaderMapper HeaderMapper、RequestHandlerRetryAdvice retryAdvice){
列表
但是没有重试。如果我的理解不正确或配置中有错误,请告知
感谢Gary评论中的帮助。以下配置有效
@Configuration
@PropertySource({ "application.properties" })
@EnableIntegration
@IntegrationComponentScan
@EnableRetry
public class IntegrationBeanConfiguration {
@Bean
public SimpleRetryPolicy retryPolicy(){
SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
retryPolicy.setMaxAttempts(5);
return retryPolicy;
}
@Bean
public FixedBackOffPolicy fixedBackOffPolicy(){
FixedBackOffPolicy p = new FixedBackOffPolicy();
p.setBackOffPeriod(1000);
return p;
}
@Bean
public RequestHandlerRetryAdvice retryAdvice(SimpleRetryPolicy retryPolicy, FixedBackOffPolicy fixedBackOffPolicy){
RequestHandlerRetryAdvice retryAdvice = new RequestHandlerRetryAdvice();
RetryTemplate retryTemplate = new RetryTemplate();
retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
retryTemplate.setRetryPolicy(retryPolicy)
retryAdvice.setRetryTemplate(retryTemplate);
return retryAdvice;
}
@Bean
@ServiceActivator(inputChannel="rtpRequestPostOperationRequestChannel")
public MessageHandler httResponseMessageHandler(MessageChannel rtpRequestPostOperationResponseChannel, HeaderMapper<HttpHeaders> headerMapper, RequestHandlerRetryAdvice retryAdvice) {
List<Advice> list = new ArrayList<>();
list.add(retryAdvice);
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler("https://myhost:8080/rtp/request");
handler.setHttpMethod(HttpMethod.POST);
handler.setHeaderMapper(headerMapper);
handler.setOutputChannel(rtpRequestPostOperationResponseChannel);
handler.setExpectedResponseType(RtpResponse.class);
handler.setAdviceChain(list);
return handler;
}
}
@配置
@PropertySource({“application.properties”})
@使能集成
@集成组件扫描
@启用重试
公共类集成Bean配置{
@豆子
公共简单政策retryPolicy(){
SimpleRetryPolicy retryPolicy=新的SimpleRetryPolicy();
retryPolicy.setMaxAttempts(5);
退货政策;
}
@豆子
public FixedBackOffPolicy FixedBackOffPolicy(){
FixedBackOffPolicy p=新的FixedBackOffPolicy();
p、 退避期(1000);
返回p;
}
@豆子
public RequestHandlerRetryAdvice retryAdvice(SimpleRetryPolicy retryPolicy、FixedBackOffPolicy FixedBackOffPolicy){
RequestHandlerRetryAdvice retryAdvice=新建RequestHandlerRetryAdvice();
RetryTemplate RetryTemplate=新RetryTemplate();
retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
retryTemplate.setRetryPolicy(retryPolicy)
setRetryTemplate(retryTemplate);
回复回复建议;
}
@豆子
@ServiceActivator(inputChannel=“rtpRequestPostOperationRequestChannel”)
public MessageHandler httResponseMessageHandler(MessageChannel rtpRequestPostOperationResponseChannel、HeaderMapper HeaderMapper、RequestHandlerRetryAdvice retryAdvice){
列表=新的ArrayList();
列表。添加(retryAdvice);
HttpRequestExecutingMessageHandler=新的HttpRequestExecutingMessageHandler(“https://myhost:8080/rtp/request");
handler.setHttpMethod(HttpMethod.POST);
handler.setHeaderMapper(headerMapper);
setOutputChannel(rtpRequestPostOperationResponseChannel);
setExpectedResponseType(RtpResponse.class);
handler.setAdviceChain(列表);
返回处理程序;
}
}
您没有将retryPolicy
注入模板;但这只意味着它将使用默认的3次尝试。您所说的“不发生”是什么意思?重试通常是无声的。我建议您打开调试日志以查看重试行为。谢谢Gary。现在我可以看到正在进行的重试。