服务消息传递模式:实例路由与异步队列解析
1. 服务实例路由
在服务交互过程中,当需要反复访问特定的有状态服务实例时,消费者往往需要依赖自定义逻辑,这会导致消费者与服务之间的耦合度增加。以下是对服务实例路由的详细分析。
1.1 问题描述
- 当消费者向服务发送多条消息,且这些消息需要在相同的运行时上下文中处理时,服务通常被设计为有状态的,以进行对话式或会话中心的消息交换。
- 然而,服务契约通常没有提供标准化的方式来表示或定位服务实例。因此,消费者和服务设计者需要在常规消息数据中传递专有实例标识符,这就导致了需要专有实例处理逻辑。
以下是一个示例场景:
|步骤|描述|
| ---- | ---- |
|1|服务A(消费者)向服务B发送请求消息。服务B使用专有内部服务逻辑创建一个实例“实例X”。|
|2|服务B将“实例X”的标识符作为响应消息体的一部分返回给服务A。|
|3|服务A中的专有处理逻辑定位并提取嵌入的实例标识符,然后将其嵌入到发送给服务B的“实例X”的第二条消息中。|
这种方式增加了服务与消费者之间的耦合度,因为每个对话可能不同,没有统一的标准,实例细节总是需要自定义逻辑来处理。
1.2 解决方案
通过扩展底层基础设施来支持消息元数据的处理,使服务实例标识符能够被放置在服务整体目标的引用中(也称为端点引用)。这个引用由消息传递基础设施管理,消费者发出的消息会自动路由到引用所代表的目标。
以下是改进后的示例场景:
|步骤|描述|
| ---- | ---
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



