Подскажите пожалуйста, а я могу вот такую штуку использовать? rpc,

только реализованное в реббите https://www.rabbitmq.com/tutorials/tutorial-six-php ( или https://habr.com/ru/articles/747644/), там есть correlation_id, страховка от network otage и прочего, как вроде бы то, что мне нужно, этакая защита от дуплицирования запроса во втором сервисе. а полноценную сагу тащить для всего двух сервисов мне кажется накладно
Вот выдержка из статьи, звучит как то,что мне нужно
мы подписываемся на специальную псевдоочередь amqp.rabbitmq.reply-to
отправляем сообщение с указанием этой очереди в качестве reply-to заголовка
кролик генерирует для нас уникальный routing_key, по которому будет должно быть опубликовано ответное сообщение в default exchange
сервер получает наше сообщение и отправляет ответ по этому routing_key.

11 ответов

46 просмотров

Стикер

Не хватило информации: 1. Можно ли запросы выполнять параллельно? 2. Что будет, если не смогли отправить во второй сервис? Надо ли откатывать?

Artyom- Автор вопроса
Vadim
Не хватило информации: 1. Можно ли запросы выполня...

Если не смогли/второй сервер не ответил на данный запрос, то откатывать

Artyom- Автор вопроса
Artyom- Автор вопроса

Нет, но какую-то защиту хотелось бы сделать, тк через grpc второй запрос бывает дублируется

Artyom
Если не смогли/второй сервер не ответил на данный ...

Только на кролике такое надежно не построить.

Artyom
Нет, но какую-то защиту хотелось бы сделать, тк че...

Если только от дублей избавиться, то можно через кэш/базу данных запросы пропускать.

Artyom- Автор вопроса
Artyom- Автор вопроса
Vadim
Только на кролике такое надежно не построить.

А какой вариант тогда +- надёжный? Ведь это мне кажется стандартная проблема.

Artyom
А какой вариант тогда +- надёжный? Ведь это мне ка...

Вам же надо откатить, если второй сервис не ответил. Если сервис умеет отвечать, что операцию не выполнил и не сможет, тогда хореография на базе событий. Возможно, даже кролика хватит. Если сервис не умеет ясно объяснять, что не так, а только ошибку возвращает, то оркестрация, а в этом случае нужен дирижер (например, temporal).

Artyom- Автор вопроса
Vadim
Вам же надо откатить, если второй сервис не ответи...

Это если он принимает, что не может, а если какая-то сетевая ошибка. Я же по сути жестко хочу контролировать связку запрос - ответ

Похожие вопросы

Обсуждают сегодня

Добрый день! Удалил все файлы с переменными из проекта, получил Error: release deploy: process resources: error validating adoptable resources: adoption validation failed: re...
Evgheni Mad
2
@aigrychev, @ilya_lesikov добрый день! а поддерживает ли werf helm xxxx или werf bundle xxxx работу с сабчартами через http-прокси? (сработает ли использование HTTP_PROXY/HTTP...
Сергей Голод
4
Привет! Вопрос про werf helm Приложение деплоится через werf helm upgrade --atomic Иногда(все условия для воспроизведения до конца непонятны, но есть версия, что это происходи...
𝓐𝓵͢͢͢𝓮𝔁 C
2
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
А как подмаунтить каталог если я не буду стапель юзать, а просто Докерфайл?
yoshi kakbudto
3
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Добрый день, после перехода с версии 1.2 на 2.10 werf cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies Подскаж...
Дмитрий
29
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
Добрый день, подскажите пожалуйста, а как поле project (в werf.yaml) параметризовать ? werf converge —project <APP_NAME> в одном общем репо держим 1 хельм чарт и деплоим с ...
Sulaymon
5
Карта сайта