в настоящее время у меня есть Spring Integration Flow, в котором читается полезная нагрузка из очереди JMS, преобразуется в формат XML, а затем отправляется полезная нагрузка XML в основное приложение. в RecordSenderHandler есть логика c, чтобы сделать API отдыха вызовов для моего основного приложения и сохранить ответ на Redis в соответствии с полученным ответом. Если мое основное приложение недоступно или что-то не так с моим бэкэндом, я отмечаю как ошибку HTTP 500. Но я хочу повторить попытку на определенное время и ограничить максимальную ошибку, которую я получил. ниже мой код. какие-либо предложения?
@Bean
public IntegrationFlow jmsMessageDrivenFlowWithContainer() {
return IntegrationFlows
.from(Jms.messageDrivenChannelAdapter(
Jms.container(this.jmsConnectionFactory, recordDestinationQueue)
.concurrentConsumers(xmlConcurrentConsumers)
.maxConcurrentConsumers(xmlMaxConcurrentConsumers))
.errorChannel("errorChannel"))
.handle(payloadSender(), e->e.advice(circuitBreakerAdvice()))
.get();
}
@Bean
@ServiceActivator(inputChannel = "handleChannel")
public PayloadSender payloadSender() {
return new PayloadSender ();
}
@Bean
public RequestHandlerCircuitBreakerAdvice circuitBreakerAdvice() {
RequestHandlerCircuitBreakerAdvice requestHandlerCircuitBreakerAdvice = new RequestHandlerCircuitBreakerAdvice();
requestHandlerCircuitBreakerAdvice.setThreshold(3);
requestHandlerCircuitBreakerAdvice.setHalfOpenAfter(15000);
return requestHandlerCircuitBreakerAdvice;
}