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

posted on 2025-11-24 08:00  荣锋亮  阅读(0)  评论(0)    收藏  举报

导航