nats import & export简单说明
服务导出(Service Export):用于请求-回复模式。一个账户将服务(即一个主题,用于接收请求并回复)导出,其他账户可以导入该服务并向其发送请求。
流导出(Stream Export):用于流消息(即发布-订阅模式)。一个账户将流(即一个主题,用于发布消息)导出,其他账户可以导入该流并接收消息
stream 机制
// 账户A:导出流(发布者)
accountA.Exports = []*Export{
{Subject: "prices.*", Type: Stream} // 只发布,不接收响应
}
// 账户B:导入流(订阅者)
accountB.Imports = []*Import{
{Account: "A", Subject: "prices.*", To: "external.prices.*"}
}
// 数据流向:A → B(单向)
ncA.Publish("prices.stock", data) // A发布
// B订阅 "external.prices.stock" 接收数据
service
// 账户A:导出服务(服务提供者)
accountA.Exports = []*Export{
{Subject: "users.>", Type: Service} // 接收请求并返回响应
}
// 账户B:导入服务(服务消费者)
accountB.Imports = []*Import{
{Account: "A", Subject: "users.>", To: "svc.users.>"}
}
// 数据流向:B ⇄ A(双向)
// B发起请求
resp, err := ncB.Request("svc.users.get", requestData, timeout)
// A处理请求并返回响应
参考资料
https://docs.nats.io/running-a-nats-service/configuration/securing_nats/accounts
浙公网安备 33010602011771号