Pub-Sub设计模式

时间:2019-03-16 21:27:19

标签: node.js amazon-web-services design-patterns amazon-ec2 publish-subscribe

我有两个项目:其中一个是多处理器项目,第二个是单个处理器。它们都是用Node JS编写的。

此外,我正在使用三个系统-它们是: Loggly,Mixpanel,电子邮件系统。 有些事件与两个项目都有关-例如某些产品的交易。

一旦发生交易事件-我需要做三件事: 1)更新Loggly有关事务属性。 2)更新有关事务属性的Mixpanel。 3)更新电子邮件系统(例如-发送有关交易的确认邮件)。

数据以JSON格式发送。

此外,某些事件与所有三个系统(Loggly,Mixpanel,电子邮件系统)有关,而某些事件仅与其中一部分有关。

每个系统都对数据的不同部分感兴趣。例如,某些系统需要所有数据,而其他系统仅使用事件数据的一小部分。

问题: 当前,在我的项目中-一旦发生事件-我将直接将数据从两个项目发送到相关系统。这意味着我的代码在2个项目中重复(这很糟糕)。

例如:

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

我正在寻找新的体系结构-它可以解决代码重复问题。 做到这一点的最佳架构是什么-结合Pub-Sub模式和AWS工具?

正确的做法是什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

由于您正在使用AWS,因此建议您详细了解Amazon SNS https://aws.amazon.com/pub-sub-messaging/

您可以在SNS上设置一个“主题”,然后将消息散发到订阅的任何服务。