Наблюдатели API, уведомляют подписчиков через REST API

#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