nats service large data的處理
nats nodejs 實現有一個支持large 數據的示例,比較有意思,記錄下
內部玩法
通過在service endpoint 處理中,response 多個數據,然后,對于request 使用nodejs 包裝的requestMany
- 參考代碼
server
import { connect } from "@nats-io/transport-node";
import {Svcm} from "@nats-io/services"
const nc = await connect();
const svc = new Svcm(nc);
const service = await svc.add({
name: "max_large",
version: "0.0.1",
description: "returns max number in a request",
});
service.addEndpoint("max_large", (err, msg) => {
console.log(`max request: ${msg?.data}`);
msg?.respond(msg?.data);
msg?.respond("ddd");
msg?.respond("eee");
msg?.respond("fff");
msg?.respond();
});
client
import { connect, headers } from "@nats-io/transport-node";
const nc = await connect();
const response = await nc.requestMany("max_large", JSON.stringify([1, 2, 3]));
for await (const msg of response) {
console.log(`response: ${msg.string()}`);
}
說明
當然對于requestMany 并不是所有client 都支持,但是對于一些語言可以自己擴展,但是此模式還是挺有意思的,比較有用
參考資料
https://github.com/nats-io/nats.js/blob/main/services/examples/03_bigdata-client.ts
https://github.com/nats-io/nats.js/blob/main/services/examples/03_bigdata.ts
https://github.com/nats-io/nats.js/blob/main/core/src/nats.ts#L187
浙公網安備 33010602011771號