7

我不熟悉使用基于消息的体系结构,例如 Azure 服务总线主题/订阅功能。

我想知道如何最好地处理不同的消息类型。

例如说我有两条消息。一个用于创建新客户,另一个用于删除客户。

我可以;

  1. 创建两个主题。每个主题将有一个订阅。处理消息的代码将独立处理其消息类型。

  2. 为客户创建一个主题。创建一个订阅以接收所有消息。处理消息的代码需要在处理之前确定消息类型。

  3. 为客户创建一个主题。创建两个订阅,过滤消息类型。处理消息的代码将独立处理其消息类型。

我敢肯定没有对错之分,但希望在这方面有经验的人提供一些意见。

非常感谢,

大卫

4

1 回答 1

9

选择主题/订阅的一些注意事项:

  1. 您是否会有一个对不同消息类型或单个消息类型感兴趣的单个节点(进程/应用程序等)。如果您需要一个应用程序来处理多种消息类型(添加和删除),那么最好有一个主题。然后,您的应用可以收听单个订阅并处理两条消息,您还可以将应用的更多实例添加到该单个订阅。稍后,如果您决定分离该处理,您仍然可以创建两个不同的订阅并过滤消息以将添加/删除消息发送给一个或另一个。

  2. 如果您的系统专注于单个客户,假设您正在编写针对每个客户的多个服务,那么每个客户有一个主题是好的,因为您可以与客户线性扩展,并且在不同客户之间有明确的授权/处理边界。但是,如果您通过单个多租户服务处理所有客户请求,并且不希望每个客户拥有不同的服务实例,那么这不是最佳方法。

    以单个主题开始为您提供了很大的灵活性,然后随着系统的发展,您可以使用ForwardTo将消息从单个订阅引导到另一个主题/队列等。这允许您从一个简单的拓扑开始创建丰富的消息传递拓扑。

于 2013-01-15T19:07:31.510 回答