Слушатель Spring Boot для регистрации клиента - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть приложение Spring Boot с многочисленными микро сервисами. Он использует eureka в качестве клиента обнаружения. В одной из служб есть процесс, который должен запускаться при запуске приложения, и в свою очередь он использует некоторые другие службы. Для достижения этого я использую прослушиватель событий:

@Service
public class MyService {

    private OtherService otherService;

    @Autowired
    public MyService(final OtherService otherService) {
        this.otherService = otherService;
    }

    // Run once upon application startup
    @EventListener(ApplicationReadyEvent.class)
    private void runInitially() {
        otherService.doStuff();
    }
}

Это прекрасно работает, когда я запускаю службы по очереди в правильном порядке, однако, если я запускаю их сразу (как я должен сделать в кажется, что otherService еще не зарегистрирован в Eureka, что приводит к таким ошибкам, как:

2020-04-17 09:59:35.879 ERROR 17568 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed 
java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: otherService
at org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:90)

Есть ли способ сделать это с помощью прослушивателя, который будет регистрироваться, когда другие службы зарегистрированы? Также приветствуются другие альтернативы.

...