跳转到内容

RPC

createRPCRouter 提供进程内 RPC 方法注册与调用,createRPCClient 提供基于 HTTP 的跨服务 RPC 客户端。

import { createRPCRouter } from "@ventostack/core";
const rpc = createRPCRouter();
// 注册方法
rpc.register<{ id: string }, { name: string }>("getUser", async (req) => {
return { name: `User ${req.id}` };
});
// 调用
const result = await rpc.call("getUser", { id: "1" });
// => { name: "User 1" }
// 列出已注册方法
rpc.methods(); // ["getUser"]

重复注册同名方法会抛出错误,调用未注册方法同样会抛错。

import { createRPCClient } from "@ventostack/core";
const client = createRPCClient({
baseUrl: "https://user-service.internal",
timeout: 5000,
headers: { Authorization: "Bearer internal-token" },
});
const user = await client.call<{ id: string }, { name: string }>("getUser", {
id: "1",
});

客户端会向 {baseUrl}/rpc/{method} 发送 POST JSON 请求。

属性类型默认值说明
baseUrlstring服务基础 URL(必填)
timeoutnumber30000请求超时(毫秒)
headersRecord<string, string>{}附加请求头
  • 进程内:调用未注册方法抛出 Error("RPC method not found: ...")
  • HTTP 客户端:响应非 2xx 时抛出包含状态码和响应体的错误
  • 超时时自动中止请求(AbortController