Feign Call из асинхронного метода - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть Spring Event Publisher и слушатель, где требование, как указано ниже:

  1. Инициирование события некоторым методом.
  2. Прослушивание события из класса слушателя
  3. Как только событие прослушивается, позвоните в другой микро-сервис

Так что в настоящее время я использую openfeign для вызова другого микро-сервиса.

Этот вызов работает нормальнокогда метод слушателя выполняется синхронно и происходит сбой, когда метод слушателя помечен как @ Async.

Ниже приведен пример кода: Конфигурация интерфейса Fiegn:

@AuthorizedFeignClient(name = "another-microservice")
public interface CustomFeignInterface {
    @PostMapping("api/call")
    public ResponseEntity<String> callMethod(@RequestBody Foo foo);
}

Spring Event Listener:

@Component
public class FooEventListener {

    @Autowired
    private CustomFeignInterface customFeignInt;

    @Async
    @EventListener
    public void handleCustomEvent(Foo foo) {
        try {
            ResponseEntity<String> res = customFeignInt.callMethod(foo);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

В соответствии с приведенным выше кодом, вызов другого микро-сервиса работает идеально, когда я удаляю @Async, но не удается, когда я добавляю @Async в метод FooEventListener.handleCustomEvent(..).

Где-то я обнаружил, что Feign не поддерживает асинхронные вызовы: https://github.com/OpenFeign/feign/issues/361

Но все же мне нужно асинхронное поведение, как мне этого добиться?

...