node.js - 发布-订阅设计模式

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

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

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

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

数据以JSON格式发送。

此外,有些事件与所有三个系统(Loggly、Mixpanel、eMail 系统)相关,有些事件仅与其中的一部分相关。

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

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

例如:

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

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

这样做的正确方法是什么?

感谢您的帮助。

最佳答案

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

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

关于node.js - 发布-订阅设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55201659/

相关文章:

javascript - 在 sails.js 应用程序中设置安全 cookie

javascript - Firebase onCreate 令人困惑

javascript - Node.js 0.12 中提供的 ECMAScript 6 功能

c++ - 未实现的纯虚方法问题

c++ - 在运行时确定返回类型是右值还是左值时,如何避免不必要的复制?

javascript - 在 node_modules 中找不到第三方 VueJS 组件

python - 为什么在 IAM 设置为允许所有时 AWS 拒绝许可?

amazon-web-services - AWS 认知 : unknown error when logging in the admin created user for the first time

amazon-web-services - 亚马逊 Redshift : Unique Column not being honored

Java - 备忘录模式和撤消