【问题标题】:Pub-Sub Design Pattern发布-订阅设计模式
【发布时间】:2019-03-16 21:27:18
【问题描述】:

我有两个项目:一个是多处理器项目,第二个是单处理器项目。它们都是用 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 工具?

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

感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    由于您使用的是 AWS,我建议您了解有关 Amazon SNS 的更多信息https://aws.amazon.com/pub-sub-messaging/

    您可以在 SNS 上设置“主题”,然后将消息扇出到订阅它的任何服务。

    【讨论】:

    • 在 Pub-Sub 设计模式中,发布者和订阅者不知道彼此的存在。一旦发生交易事件,我需要将数据发送到所有三个系统,包括电子邮件系统,因此我需要将绑定数据(用于电子邮件模板)添加到事件数据。我该如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多