Резервный для вызова OpenFeign, который повторяет другой вызов много раз до успеха - PullRequest
0 голосов
/ 19 сентября 2019

Я смотрю на реализацию следующего сценария с OpenFeign (я использую Feign / Hystrix в Spring Boot 2) наиболее подходящим способом:

У меня есть вызов клиента Feign, который может занять много времени.Этот вызов запустит некоторую транзакцию на удаленном сервере.Если вызов достигает времени ожидания Feign, он сбрасывается Feign, но, тем не менее, транзакция продолжается на удаленной службе.

Как только время вызова достигает времени ожидания, мне нужно инициировать другой вызов, который отменит транзакцию.Однако до завершения транзакции на удаленном сервере (через некоторое время после тайм-аута) этот вызов ничего не отменяет и возвращает статус 4xx.Однако, когда транзакция будет окончательно завершена, вызов отмены получит статус 200. Поэтому вызов отмены должен в конечном итоге повторяться, скажем, каждую секунду в течение определенного интервала времени (например, 30 с).

Другими словами, янеобходимо реализовать следующую последовательность:

  1. Выполнить вызов транзакции.
  2. Удар по таймауту вызова.
  3. Начать повторный вызов отмены вызова в течение 30 секунд каждую секунду.Продолжить, пока статус возврата 4xx.Остановитесь, когда истекут 30 секунд или возвращен статус 200.

Как я мог настроить клиент Feign и его запасные варианты таким образом, чтобы этот сценарий был реализован?

...