Можно ли использовать другой автоматический выключатель по сравнению с резервным методом? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть требование для реализации автоматического выключателя в микросервисе, основанном на java, чтобы при наличии определенного количества отказов из backendA тогда резервный метод должен вызывать другой backendB , и если backendB также дает сбой, то должен быть другой резервный метод для возврата ошибки из Java самого API. Возможно, что более важно, целесообразно ли реализовать такой дизайн. Если кто-то может дать какую-либо ссылку или примеры где такие образцы используются. Для этого я буду использовать библиотеку resilience4j . Структура кода будет выглядеть примерно так:

@CircuitBreaker(name = "backendA", fallbackMethod = "fallback1")
{Method to call backendA}//Threshold value : 10 requests

@CircuitBreaker(name = "backendB", fallbackMethod = "fallback2")
private String fallback1() { Method to call backendB} // Threshold value : 2 requests


private String fallback2() { Method to return error}

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

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

0 голосов
/ 27 апреля 2020

Это не будет работать из-за способа работы Spring AOP (прокси). Резервный метод не может иметь аннотаций.

...