Как реализовать легкую услугу pub-sub в App Engine?
Во время своей презентации I/O 2009 "Оффлайновая обработка на App Engine: взгляд вперед" (видео, слайды), Бретт Слаткин представляет службу очереди задач.
Он утверждает, что
Pub-sub системы максимизируют транзакции, развязывание:
- Большое количество небольших транзакций в секунду
- Отключение "один ко многим" с меняющимися приемниками
- Гарантированное упорядочение, фильтрация, двухфазное принятие
И специально подчеркивает
Наш новый API реализует очередность, а не pub-sub
Меня интересует только часть этих функциональных возможностей:
- Отключение "один ко многим" с
изменением выбранных/фиксированных внутренних обработчиков приемников
-
Гарантированное упорядочение, фильтрация, двухфазное принятие
Целевая цель - облегчить публикацию уведомлений/сообщений между различными модулями одного и того же веб-приложения. Примеры сценариев использования сценариев:
- Предоставление платежного модуля информации о получении счетов.
- Предоставление пользователю возможности отслеживать изменения определенного объекта домена, на который он решил следовать /star.
Каким будет правильный способ реализовать их поверх службы очереди задач?
Ответы
Ответ 1
Рассмотрим использование Cloud Pub/Sub. Это внешняя версия внутренней технологии Pub/Sub, которая широко используется в google в течение 7 лет и оказалась масштабируемой и надежной. На сегодняшний день он все еще бета-версии, но мы скоро собираемся в GA (через несколько месяцев).
Ответ 2
Существует пример примера реализации PubSubHubbub от Google, который работает в AppEngine. Вы можете посмотреть, как они это делают или удалить код, пока он не будет соответствовать вашим потребностям.