基于异步消息模式的通信

基于异步消息模式的通信

使用消息机制时,微服务之间的通信采用异步交换消息的方式来完成。基于消息机制的应用程序通常使用消息代理,它充当服务之间的中介。

消息

消息由消息头部和消息主体组成。

  • 头部包括:名称与值对的集合(描述正在发送的数据的元数据)+其它数据(如唯一消息ID、可选返回地址)。
  • 主体包括:以文本或者二进制格式发送的数据。

消息的类型

  1. 文档:仅包含数据的通用消息。接收者决定如何解释它。对命令式消息的回复是文档消息的一种使用场景。
  2. 命令:一条等同与RPC请求的消息。它指定要调用的操作及其参数。
  3. 事件:表示发送方这一端发生了重要的事件。事件通常是领域事件,表示领域对象的状态整改。

消息通道 —服务沟通的机制

消息通过消息通道进行交换。
任意数量的发送方都可以向通道发送消息,任意数量的接收方都可以从通道接收消息。

在这里插入图片描述

消息通道的类型

  1. 点对点通道:它向正在从通道中读取的一个消费者传递消息,且只有这一个消费者可以消费消息,不是实时消息,可持久化。命令式消息通常通过点对点通道发送。
  2. 发布-订阅通道:它将一条消息发送给所有订阅的接收方,所有在线的接收方才可接收到此消息,实时消息,不可持久化。事件式消息通常通过发布-订阅通道发送。

使用消息机制的交互方式

1.请求/响应和异步请求/响应

客户端和服务端通过交换一对消息来实现异步请求/响应方式的交互。

在这里插入图片描述

客户端发送具有回复通道头部的命令式消息。服务端将回复消息写入回复通道,该回复消息包含与消息标识符具有相同值得相关性ID。客户端使用相关性ID将回复消息与请求进行匹配。

2.单向通知

客户端将消息(通常为命令式消息)发送到服务端所拥有的点对点通道。服务端订阅该通道并处理该消息,但是服务端不会发回回复。

3.发布/订阅

客户端将消息发布到由多个接收方读取的发布/订阅通道。对特定领域对象的事件感兴趣的服务端只需要订阅相应的通道。

4.发布/异步响应

发布/异步响应通过把发布/订阅和请求/相应这俩种方式的元素结合在一起实现。
客户端发布一条消息,在消息的头部中指定回复通道,这个通道同时也是一个发布-订阅通道。消费者将包含相关性ID的回复消息写入回复通道。客户端通过使用相关性ID来收集响应,以此将回复消息与请求进行匹配。

发布了32 篇原创文章 · 获赞 13 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43519048/article/details/104483155