azure上saas应用程序中的通知

azure上saas应用程序中的通知,azure,notifications,message-queue,saas,Azure,Notifications,Message Queue,Saas,我们正在开发一个基于SaaS的应用程序(在azure上构建)。在此应用程序中,Web服务器和App server在所有租户之间共享,但其数据库是独立的(Sql Azure) 现在需要实现通知服务,它可以根据事件订阅生成通知。系统可以生成不同类型的事件(如帐户锁定和许多其他事件),用户可以配置这些事件的通知规则。通知可以是电子邮件和短信的形式 我们计划实现事件队列。事件通知程序将在此队列上推送偶数。通知引擎将订阅此队列。每当它接收到新事件时,它将检查是否在此类型的事件上配置了通知规则。如果是,它将

我们正在开发一个基于SaaS的应用程序(在azure上构建)。在此应用程序中,Web服务器和App server在所有租户之间共享,但其数据库是独立的(Sql Azure)

现在需要实现通知服务,它可以根据事件订阅生成通知。系统可以生成不同类型的事件(如帐户锁定和许多其他事件),用户可以配置这些事件的通知规则。通知可以是电子邮件和短信的形式

我们计划实现事件队列。事件通知程序将在此队列上推送偶数。通知引擎将订阅此队列。每当它接收到新事件时,它将检查是否在此类型的事件上配置了通知规则。如果是,它将创建一个通知,这将导致电子邮件/短信。这些电子邮件/短信可以存储在数据库中或推送到另一个队列。不同的后台进程(工作人员角色)可以处理这些电子邮件

以下是我的疑问

  • 我们应该为所有租户保留一个队列(用于事件),还是为不同租户创建单独的队列。如果我们只保留一个队列,我们可以创建一个共享订户服务,它可以订阅这个队列。我们可以很容易地扩展这台机器

  • 由于每个租户有不同的数据库,我们可以将他们的电子邮件存储到各自的数据库中,并使用一些服务,我们可以在定义的时间间隔后共享数据库并发送电子邮件。但我不确定在这种情况下我们将如何共享用户代码

  • 我们可以将邮件存储在nosql数据库中(如azure中的表存储)。订阅者(窗口服务/工作者角色)可以将此表合并,并在定义的时间间隔后发送邮件。同样,扩展在这里也是一个挑战

  • 我们可以在队列中存储电子邮件(例如RabbitMQ)。工作者角色可以订阅此队列。如果我们为所有租户保留一个队列,那么工人角色的扩展就不应该是任何问题

请就这些问题提供您的意见


提前感谢

我不会按租户而是按功能划分队列。因此,队列处理程序是特定于它们正在处理的消息类型的

IE:订单处理队列、帐户设置队列等

当您想根据租户创建队列并在客户来来去去时同步/添加/删除队列时,按租户创建队列是一个需要管理的难题。所以,我会避免这种情况

最终,如果没有诸如CloudMonix(我帮助构建的一个商业产品)这样的自动扩展服务,基于多个队列的扩展将更加困难