ai4j 入站服务:外部项目如何调 A2AServer

ai4j 入站服务:外部项目如何调 A2AServer 由 Archify 生成的时序图。 GET /.well-known/agent-card.json(或 agent.json) AgentCard:标准卡 · streaming+push · 认证要求 POST / · SendMessage{message, configuration} · 认证头 prepareTask → registerTask(taskId, contextId) startTask → transition(WORKING) appendArtifactText → transition(COMPLETED) result.task(未 returnImmediately 则阻塞至终态) SendStreamingMessage / SubscribeToTask(SSE) SSE:先 Task 快照再增量(锁内注册 · ≤64 订阅者) CreateTaskPushNotificationConfig {url, token} POST 事件 · token · Authorization(公网 HTTPS 校验) GetTask 轮询 · CancelTask → CANCELED + cancel(true) 取卡 · 认证 · 任务执行 订阅 · 推送 · 取消 外部调用方 · 任意 A2A 客户端 · 时序参与者 外部调用方 任意 A2A 客户端 TaskHandler · POST / · 校验 · 鉴权 · 时序参与者 TaskHandler POST / · 校验 · 鉴权 任务注册表 · A2ATaskRecord · ≤1024 · 时序参与者 任务注册表 A2ATaskRecord · ≤1024 Worker 执行器 · ≤32 线程 · run · 时序参与者 Worker 执行器 ≤32 线程 · run 调用方回调 · HTTPS webhook · 时序参与者 调用方回调 HTTPS webhook 图例 请求 返回 安全 异步追踪 默认消息

入口校验链

  • • 非 POST → 405;鉴权失败 → 401(A2AServer.java:538-548)
  • • JSON 畸形 → -32700;jsonrpc≠"2.0" → -32600(:563-593)
  • • A2A-Version 不符 → -32009;未知方法 → -32601(:597-619)

任务执行

  • • registerTask 锁内去重,任务容量 ≤1024(:1190-1200)
  • • worker 池 ≤32,run / runStreamResult 驱动 AgentSession(:722-765)
  • • MODEL_RESPONSE 事件逐条写入 artifact,终态不可逆(:737-758)

扇出与推送

  • • 快照与订阅者注册在同一记录锁内完成,无丢帧窗口(:803-811)
  • • 每个流式响应同时发 SSE 订阅者与全部 push 配置(:1156-1170)
  • • push 仅投公网 HTTPS 回调,5s 超时、不跟随重定向(:1216-1244)