3.1 A2A 协议
Agent-to-Agent(简称 A2A)是一项由 Google 于 2025 年发起,并贡献至 Linux 基金会的开源通信协议。其核心目标是建立跨厂商、跨框架的标准化互操作机制,使异构 AI 智能体(Agents)能够自动发现、可靠通信并高效协作,从而构建开放、可组合、可扩展的多智能体系统生态。
3.2 单智能体 vs. 多智能体架构:能力边界与协同范式的演进
在深入探讨如何构建 A2A 通信之前,我们首先需要理解,为什么多智能体协同是必然趋势。我们从六个维度对比单智能体与多智能体的能力差异:
3.3 同步 RPC 与 RocketMQ 异步通信的对比
明确了多智能体架构的优势后,下一个关键问题是:如何实现 Agent 之间的通信?
A2A 协议原生支持的同步 RPC 协议包括 JSON-RPC、gRPC 和 REST。然而,在企业级的复杂场景下,这些同步协议面临诸多挑战。下表从多个维度对比同步 RPC 与 RocketMQ 异步通信模型的差异:
3.4 开箱即用:基于 RocketMQ 的 A2A 协议实现
为加速 A2A 协议在异步通信场景的落地,我们基于 RocketMQ SDK 实现了 A2A 协议的 ClientTransport 接口。该实现旨在帮助用户在搭建多智能体应用时,能够专注于自身业务逻辑,快速构建高可靠、开箱即用的 A2A 通信方案。发送普通同步请求:
发送普通同步请求:
EventKind sendMessage(MessageSendParams request, @Nullable ClientCallContext context)
发送Stream请求:
void sendMessageStreaming(MessageSendParams request, Consumer eventConsumer…)
重订订阅任务数据:
void resubscribe(TaskIdParams request, Consumer eventConsumer, Consumer errorConsumer
查询任务完成状态:
Task getTask(TaskQueryParams request, @Nullable ClientCallContext context)
取消任务执行:
Task cancelTask(TaskIdParams request, @Nullable ClientCallContext context)
以及其他方法
开源项目地址
基于 RocketMQ 实现的 A2A 通信 RocketMQTransport 部分代码现已开源,项目地址点击跳转
3.5 架构解析:如何通过 RocketMQ 实现 Agent 间通信?
在一个典型的多智能体协作架构中,通信流程如下:
应用 A 扮演 Supervisor 角色,负责对用户输入的需求进行任务分解,并将拆分后的子任务分别发送至应用 B 的业务 Topic(Normal Topic1)和应用 C 的业务 Topic(Normal Topic2)。
应用 B 集群从 Normal Topic1 拉取消息并执行相应逻辑处理,随后将结果发布到应用 A 订阅的 LiteTopic。
应用 C 集群则从 Normal Topic2 拉取消息进行处理,并同样将结果写入该 LiteTopic。
应用 A 集群通过拉取 LiteTopic 中的消息,汇聚各子任务响应结果,进而驱动后续的业务逻辑编排。