您将如何在多租户应用程序中使用 rebus?
你会选择:
- 所有租户一起的rebus队列或
- 每个租户一个 rebus 队列(输入/错误)
免责声明:我对您的问题的上下文一无所知:)
但我认为我更喜欢一个处理消息的消息队列,然后将租户 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。