#rest #api #observer-pattern
#rest #API #наблюдатель-шаблон
Вопрос:
Я планирую создать веб-приложение, в котором пользователи смогут обновлять некоторые данные. Другие разработчики должны иметь возможность подписаться на мое приложение через API и должны получать уведомления, если данные изменились. С этим уведомлением подписчику должны быть отправлены измененные данные. Затем приложение подписчиков автоматически обрабатывает полученные данные.
User changes data
-> My webapps' datastore is being updated
-> Notify all subscribers via REST or something like that over the internet
-> Subscribers process changed data
В настоящее время я нахожусь на этапе планирования, и моя проблема заключается в том, какую технологию использовать для создания этой системы уведомлений.
Я не знаю кода подписывающихся приложений, поэтому интерфейс между моим приложением и подписывающимся приложением должен быть чем-то вроде REST API.
Я думал об использовании Apache Kafka
or RabbitMQ
для отправки этих сообщений, но не знаю, правильный ли это способ реализовать такую функциональность. Я никогда не делал такого Observer
шаблона между API сам.
У вас есть какие-либо предложения по этой теме?
РЕДАКТИРОВАТЬ: Apache Kafka
и RabbitMQ
были только примерами. Я прошу ваших предложений, какая технология лучше всего подходит для этой ситуации. Это может быть решением вообще без этих типов служб обмена сообщениями.
Комментарии:
1. Поскольку REST основан на модели взаимодействия запрос-ответ, которой, вероятно, недостаточно для вашего абонентского обслуживания, если клиенты активно не запрашивают уведомления. Все остальное может работать, но не REST!
2. Или лучше всего определить конечную точку, с которой подписывающееся приложение может опрашивать обновления, и в подписывающемся приложении это должно выполняться один раз в минуту?
Ответ №1:
Apache Kafka основан на механизме, основанном на push и pull.Производитель отправляет данные по теме, а потребитель извлекает данные из этой темы.Мы можем определить интервал опроса для потребителя.
Это не основано на шаблоне проектирования observer. Однако для приема и потребления данных доступны службы rest, которые известны как kafka rest proxy.
Например, когда пользовательские данные изменяются, мы записываем эти изменения в теме типа UserTopic, используя Rest-сервис производителя [Kafka Rest Proxy].Мы уже зарегистрировали пять пользователей в теме UserTopic, они будут использовать данные с помощью потребительской службы Rest [Kafka Rest Proxy].
Комментарии:
1. Однако должен ли потребитель опрашивать о новых изменениях данных через определенный интервал или с моей стороны уведомлять потребителя об опросе обновленных данных?
2. Пользователь несет ответственность за чтение обновленных данных и фиксацию смещения. вы можете прочитать об этом из kafka.apache.org/documentation/#theconsumer