首页 文章

通过azure在saas应用程序中的通知

提问于
浏览
0

我们正在开发基于SaaS的应用程序(基于azure构建) . 在此应用程序中,Web服务器和App服务器在所有租户之间共享,但它们的数据库是分开的(Sql Azure) .

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

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

这是我的疑问 .

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

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

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

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

请提供您对这些要点的意见 .

提前致谢

1 回答

  • 0

    我不是通过租户而是通过功能来分隔队列 . 因此,队列处理程序特定于它们正在处理的消息类型 .

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

    当您想要根据它们进行扩展并且您希望在客户进出时可能同步/添加/删除它们时,租户创建队列是一个/头痛/管理 . 所以,我会避免这种情况

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

    HTH

相关问题