GRPC nodejs在哪里放置retrypolicy



参考https://github.com/grpc/proposal/blob/master/A6-client-retries.md

不清楚重试策略实际放置或引用的位置,它是 的一部分吗?
protoLoader.loadSync(PROTO_PATH, {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true
})

一个补充问题,一旦重试设置,关于call.on('xxxxxx',在API文档中列出的选项?使用vscode我没有得到任何lint建议,但copilot给了我这些,有没有更全面的列表?

call.on('end', () => {
console.log("---END---")
})
call.on('error', err => {
console.log("---ERROR---:"+JSON.stringify(err))
})
call.on('status', status => {
console.log("---STATUS---")
})
call.on('metadata', metadata => {
console.log("---METADATA---")
})
call.on('cancelled', () => {
console.log("---CANCELLED---")
})
call.on('close', () => {
console.log("---CLOSE---")
})
call.on('finish', () => {
console.log("---FINISH---")
})
call.on('drain', () => {
console.log("---DRAIN---")
})






首先,重试功能目前在Node gRPC库中不支持(但它正在开发中)。

第二,一旦支持重试功能,就可以在服务配置中配置它,如您链接的提案的"与服务配置集成"部分中指定的那样。服务配置可以由服务所有者通过名称解析机制自动提供给客户端,也可以在构造ClientChannel对象时通过设置grpc.service_config通道参数提供,该参数的值是一个包含json编码的服务配置的字符串。

第三,调用方法时返回的调用对象是具有metadatastatus附加事件的Node流对象。根据方法在.proto文件中的定义方式,调用可以是可读流、可写流、两者都是或两者都不是,并且它将发出相应的方法。cancelled事件仅由服务器调用对象发出,而不发出metadatastatus事件。

最新更新