多租户环境中的总线消息传递

时间:2018-07-04 20:05:22

标签: .net events rabbitmq multi-tenant

我致力于在多租户环境中托管自己的.net解决方案,每个角色的可用性都很高。

在我们的上下文中,每个事件都以两种方式发送:broadcastonlyOnceBroadcast,正如它描述的那样,每个侦听器都获得事件。 OnlyOnce表示一个进程仅应触发一次,无论有多少侦听器可以启动该进程。

例如,如果我创建一个用户,我将发送一个NewUser事件。它将是我们解决方案的每个进程的broadcast,并将在进程内部触发对缓存的清除。还有几个角色在监听onlyOnce这个事件以发送欢迎电子邮件,另一个角色在监听onlyOnce来初始化用户的其他信息。这些是onlyOnce侦听器,因为我不想发送n封电子邮件或用户初始化n次。 注意,这两个侦听器不在同一服务器/进程上,onlyOnce必须支持重试异常,并在侦听器失败的情况下保持持久性。

实际上,我们正在使用RabbitMQ来满足我们的消息传递需求,但是我想知道是否有更好的解决方案。 我们将RabbitMQ划分为每个租户1个虚拟主机,以隔离租户之间的数据。

有一个Exchange发布到boardcast邮件的AutoDelete Exclusive队列(每个进程1个)中。每个事件还有另一个Exchange发布到持久/传统队列(每种onlyOnce侦听器有1个队列)。在上一个示例中,NewUser Exchange附加了两个队列(sendMail和initialize)。

它有效,但我认为这不是做这种简单事情的最佳方法。 我真的很想知道,使用RabbitMQ是否有更好的方法,或者还有其他产品可以更有效地做到这一点。

是否有人遇到过sme问题或对如何解决它有想法。

0 个答案:

没有答案