微服务架构中的通知服务

时间:2020-11-04 09:34:57

标签: azure push-notification notifications microservices

我们拥有微服务架构来支持大型应用程序。所有服务都使用azure服务总线作为媒介进行通信。目前,我们正在根据需要从不同的服务发送(立即/计划的)通知。这里需要一个单独的通知服务,该服务可以承担这种负担,并负责格式化和发送通知(电子邮件,文本等)。

我的想法: 通知服务将拥有自己的数据库,该数据库将包含与通知相关的数据(设置,模板,时间表等)以及一些主数据(从其他来源复制)。我不想将所有交易数据复制到该数据库(出于显而易见的原因),但是我们可能需要交易和历史数据来形成通知。我打算订阅服务总线事件(由其他服务发布),并且发送格式化通知所需的数据的责任在于服务引发服务总线事件。通知服务将依靠该数据填充模板(存储在ots自己的DB中),然后发送通知。 通知服务的工作是侦听服务总线事件,然后根据事件中的数据填充模板,然后发送通知。

问题:

  1. 如果通知服务从服务总线事件接收的数据在通知模板中没有所有必需的数据,该怎么办。如何从其他服务查询/获取丢失的数据??
  2. 假设服务为单个操作发布了100个事件,我们需要发送单个通知,说明整个操作。通知服务如何进行管理,因为它将分别获得100条不同的消息。
  3. 由于通知触发器取决于其他来源发送的数据(服务总线事件),所以当我们安排了通知时(每天早上6点),会发生什么情况。我们如何获取通知所需的数据(因为通知数据库中没有数据)?

我正在寻找一些经验建议和一些参考资料。预先感谢。

1 个答案:

答案 0 :(得分:1)

  1. 您可能需要将通知实现为服务,这意味着,假设您将应用程序作为插件导出到 Azure 本身。这里有几点.....

    1. 您的通知只有在信息有效时才会被接受,
    2. 拥有前端(状态管理)和后端的缓存系统、微服务(Redis 或任何缓存系统)
  2. 在每个操作上捕获 EventId,这是一个很好的做法,我们可以通过这种方式跟踪应用程序的复杂操作,您可以解决重复通知,注意尽可能避免向用户发送此类通知,或者尝试发送一条通知,在一条消息中召集一组通知,

3.在这里放置一个断路器逻辑来处理您的无效通知,将这种类型的通知放入30分钟的重试队列中吗?并重新发布活动

参考资料

快乐编码:)