服務導出(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