ibe*_*dev 6 architecture event-bus message-bus azureservicebus azure-servicebus-topics
这是一个有点普遍的问题,因为它不仅适用于我的场景(使用 Azure 服务总线),而且适用于发布/订阅事件的上下文中的任何事件总线。
问题是:是否更倾向于拥有一个不能在生产者之间共享主题的架构/拓扑? 换句话说:每个事件生产者一个主题 VS 多个生产者共享一个主题?
我有一个明确的偏好:一个主题应该只由一个制作人拥有和访问,如果其他制作人。但我似乎是团队中唯一一个持这种观点的人,而其他人似乎“为简单起见”在不同事件制作者之间共享同一主题似乎没有任何问题,而且我无法在技术可行性方面真正争论。 .
我希望从更技术的角度找到有价值的答案和良好实践,因为我的推理是从更多业务/组织的角度出发,因为我来自 DDD 背景,而其他人则没有。
如您所见,从 DDD 的角度来看,需要在同一主题中发布的多个生产者会引发设计气味。我并不是说它不能完成,我试图从技术角度找出是否也应该避免它。
任何有这方面实践经验的人?
PS:有一个关于 Kafka 的类似问题,但我认为这与 Kafka 对发布者 - 订阅者使用不同的技术方法完全相同
更新 1:我不知道 NServiceBus,但我已经在 MassTransit 上工作了一些,当利用 MassTransit 的拓扑创建(这是唯一的方法 afaik)时,它不仅为每个生产者而且每个消息类型创建了不同的主题。
再补充几个我认为我们应该尽可能为每个生产者使用一个主题的原因: