Задать вопрос
Borisawa
@Borisawa
Python-разработчик

Имеет ли смысл реализация REST API через RabbitMQ?

Разрабатываю интеграционную шину данных (ESB) в небольшой организации с RabbitMQ. У нас есть REST API с 4 методами для подрядчиков (они передают данные и получают в ответ id созданной сущности в нашей CRM на корп. портале), его схема работы выглядит так:689979407edab801572822.png
Отдельные лица в отделе настаивают на реализации запросов к REST API через RabbitMQ, чтобы был один единый сервис для транзита всех данных. Но мне это кажется странным, поскольку:
1) Это будет точкой отказа для всех сервисов;
2) Нельзя реализовать ответ для http-запроса, ведь брокер разделяет процесс и не предназначен для синхронных запросов (так мне кажется).
То, как будет работать шина без REST API представлено на рисунке:.689979fb40c43881566719.png
Мой вопрос: следует ли реализовывать передачу данных по REST API через RabbitMQ в данном случае?
Спасибо.
  • Вопрос задан
  • 250 просмотров
Подписаться 2 Простой 17 комментариев
Пригласить эксперта
Ответы на вопрос 1
AnatolyEmelin
@AnatolyEmelin
Co-founder sveklamarket.app
Это будет какой-то сервис между брокером и клиентами брокера. Такое делают если у клиента нет возможности работать с брокером напрямую (нет нативного клиента). Например, 1С. Там нет возможности напрямую подключится к RabbitMQ, вот для этого делают прокладку, которая умеет работать с api 1С сервера и коннектиться RabbitMQ, . Транспортом может быть HTTP, WebSocet ... да могут быть даже ftp и просто файлы в общих папках))). Да все будет асинхронно. Вообще синхронность какойто большой системы такой же большой вопрос. По большому счету синхронным бывает только эхо запрос). Это вечное "а клиент/сервер может подождать ответа?" ))) Тут скорее важна гарантированная доставка с гарантированной очередностью например по времени.
По схеме вижу идею какого-то нотификатора, которым A пинает B когда отправил ему сообщение, а тот должен синхронно отреагировать на этот запрос или просто сказать: "Посмотрю и отпишусь"? ...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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