我们正在使用amqp10包为nodejs从azure的服务总线上的队列接收消息。我们有时会收到错误
{ Error: read ETIMEDOUT at _errnoException (util.js:1022:11) at TLSWrap.onread (net.js:615:25) code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'read' }
但是在停止接收消息后大约12分钟就会抛出此消息。有没有办法配置超时?我们正在使用提供的服务总线政策Policy.ServiceBusQueue
。
代码可用here
答案 0 :(得分:0)
尝试使用以下设置更长的超时时间:
client.connect(uri, { idleTimeout: 120000 }).then(() => {
// ...
})
default value of idleTimeout是120000毫秒。
答案 1 :(得分:0)
如果您想永远接收消息(可以根据需要停止接收),可以利用subscribe
SDK版本7中提供的@azure/service-bus
方法。
它还可以很好地处理断开连接和重新连接,甚至能够从致命错误(例如,实体未找到)中恢复。
您可以参考使用@azure/service-bus
SDK第7版的receiveMessagesStreaming.ts示例代码。
我知道这是一个较晚的答复,但是以防万一有人遇到旧的服务总线节点SDK的问题并降落在此处,请参阅下面的链接。
@azure/service-bus
的最新版本7.0.0已于最近发布。