Я пытался использовать пружинный повтор для прерывания цепи и повтор, как показано ниже, и он работает, как и ожидалось, но проблема не в том, чтобы сконфигурировать «maxAttempts / openTimeout / resetTimeout» в качестве переменных env (ошибка должна быть константой). Мой вопрос: как использовать resilience4j для достижения нижеуказанного требования?
также, пожалуйста, предложите, что есть способ передать переменные env в "maxAttempts / openTimeout / resetTimeout".
@CircuitBreaker(value = {
MongoServerException.class,
MongoSocketException.class,
MongoTimeoutException.class
MongoSocketOpenException.class},
maxAttempts = 2,
openTimeout = 20000L ,
resetTimeout = 30000L)
public void insertDocument(ConsumerRecord<Long, GenericRecord> consumerRecord){
retryTemplate.execute(args0 -> {
LOGGER.info(String.format("Inserting record with key -----> %s", consumerRecord.key().toString()));
BasicDBObject dbObject = BasicDBObject.parse(consumerRecord.value().toString());
dbObject.put("_id", consumerRecord.key());
mongoCollection.replaceOne(<<BasicDBObject with id>>, getReplaceOptions());
return null;
});
}
@Recover
public void recover(RuntimeException t) {
LOGGER.info(" Recovering from Circuit Breaker ");
}
используются зависимости
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>