在多租户应用程序中使用Rebus

时间:2014-05-26 19:23:21

标签: rebus

您如何在多租户应用程序中使用rebus?

你会选择:

  • 所有租户的rebus队列或
  • 每个租户的rebus队列(输入/错误)

1 个答案:

答案 0 :(得分:2)

免责声明:我对您的问题的背景一无所知:)

但我想我更喜欢一个处理邮件的邮件队列,然后将租户ID作为所有相关邮件的自定义标头传递。

事实上,我的一些同事现在正在这样做。

当你想在标题中传递这种信息时,有些事情变得很有趣 - 即我建议你通过做这样的事情自动将租户ID转移到传出消息:

Configure.With(...)
   .(...)
   .Events(e => {
       e.MessageSent += (bus, dest, msg) => {
           if (!MessageContext.HasCurrent) return;

           var items = MessageContext.GetCurrent().Items;
           if (!items.ContainsKey("custom-tenant-id")) return;

           bus.AttachHeader(msg, "custom-tenant-id", items["custom-tenant-id"]);
       };
   })
   .(...)

因此允许在不必担心租户ID的情况下交换消息。