Шаблон дизайна Pub-Sub - PullRequest
       25

Шаблон дизайна Pub-Sub

1 голос
/ 17 марта 2019

У меня есть два проекта: один из них является многопроцессорным, а второй - однопроцессорным. Оба они написаны на Node JS.

Кроме того, я использую три системы: Loggly, Mixpanel, система электронной почты. Есть некоторые события, которые имеют отношение к обоим проектам - например, транзакция некоторых продуктов.

Как только происходит событие транзакции - мне нужно сделать три основные вещи: 1) Обновите Loggly о свойствах транзакции. 2) Обновить Mixpanel о свойствах транзакции. 3) Обновление системы электронной почты (например - для отправки подтверждения по электронной почте о транзакции).

Данные отправляются в формате JSON.

Кроме того, некоторые события относятся ко всем трем системам (Loggly, Mixpanel, eMail system), а некоторые относятся только к части из них.

Каждая система заинтересована в отдельной части данных. Например, некоторые системы нуждаются во всех данных, тогда как другие используют только небольшую часть данных события.

Вопрос: В настоящее время в моем проекте - когда происходит событие - я отправляю данные двух проектов напрямую в соответствующие системы. Это означает, что мой код дублируется в 2 проектах (и это плохо).

Например:

  // call when transaction event happens
    function foo(transactionData) {
      Loggly.send('Transaction', transactionData);
      Mixpanel.send('Transaction', transactionData);
    }

Я ищу новую архитектуру, которая может решить проблему дублирования кода. Какова лучшая архитектура для этого - объединение паттернов Pub-Sub и инструментов AWS?

Как правильно это сделать?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 17 марта 2019

Поскольку вы работаете с AWS, я предлагаю больше узнать об Amazon SNS https://aws.amazon.com/pub-sub-messaging/

Вы можете настроить «Тему» в SNS, которая затем будет распространять сообщения для любых подписанных на нее сервисов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...