Есть ли у Hystrix возможность восстановления ожидающих запросов в очереди?

Я включил метод Hystrix fallback() в моем сервисе A, поэтому, когда зависимый сервис B не работает, он переключается на резервный метод и отображает предоставленное мною статическое сообщение.

При этом я также отправляю неудавшийся запрос в mq (rabbit mq)

Теперь, как я могу получить ожидающий или ожидающий запрос в очереди и обработать его, когда зависимая служба B запущена?

1 ответ

Без полного обзора вашей архитектуры (которая выходит за рамки этого) трудно точно понять, чего вы пытаетесь достичь. Но на первый взгляд кажется, что вы ожидаете слишком многого от Hystrix. Как только запасной вариант завершен, он завершен.

Если вы отправили сообщение в очередь, это сообщение нужно откуда-то использовать. Вы хотите, чтобы сообщение использовалось только во время работы службы B, поэтому логически единственным вариантом является использование службы B из этой очереди невыполненных запросов. Таким образом, предположительно, при использовании этого сообщения, Служба B должна будет повторить запрос на Службу А.

Я полагаю, у вас может быть служба наблюдения, которая после получения сообщения из очереди невыполненных запросов начинает проверять работоспособность службы B и, когда она становится "зеленой", повторяет попытку запроса службы А.

Все это звучит очень запутанно для меня, я бы предложил переосмыслить.

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

Исходя из этого, я чувствую, что было бы лучше, если бы вы в первую очередь сделали Сервис B чисто управляемым сообщениями. Обратитесь в службу A, чтобы отправить сообщение прямо в службу B. Тогда вам не нужно беспокоиться о том, что служба не работает или перегружена, или что-то в этом роде.

Другие вопросы по тегам