【发布时间】:2021-11-03 10:00:00
【问题描述】:
我正在关注Azure Service Bus 上的微服务架构。我需要将事件发布到主题,以便一些微服务可以处理它。
我面临三个选择。我可以只创建一个主题并将各种事件发布到该单个主题。或者,我可以为每个事件创建一个主题。或者,我可以为每个微服务创建一个主题。
我的问题是在这种情况下什么被认为是最佳实践。
【问题讨论】:
标签: microservices azureservicebus
我正在关注Azure Service Bus 上的微服务架构。我需要将事件发布到主题,以便一些微服务可以处理它。
我面临三个选择。我可以只创建一个主题并将各种事件发布到该单个主题。或者,我可以为每个事件创建一个主题。或者,我可以为每个微服务创建一个主题。
我的问题是在这种情况下什么被认为是最佳实践。
【问题讨论】:
标签: microservices azureservicebus
请注意,同一事件通常可以发布到多个主题。因此,您可以将事件发布到“来自每个服务的每个事件”firehose 主题和“来自该服务的每个事件”主题。
一般来说,您要考虑的是,对于任何两个不相交的事件类型/类别,是否可能存在对 X 类型的兴趣所暗示的消费者(阅读:弱于强暗示,更像是预测价值下注是否可以接受回报)对 Y 型的兴趣?如果这看起来很可能,那么由类型 Z(任何类型 X 或类型 Y 的事件)组成的主题是值得拥有的。
在许多情况下,特别是如果特定类型的事件仅由一个特定服务发出并且该服务可以做出一些排序保证,那么值得为“来自该服务的每个事件”设置一个主题,然后有一个该主题的消费者将消息重新混合到适当的其他主题中。
【讨论】: