如何解决读取ECONNRESET函数库错误



当我在node js中与公牛库队列时,错误是这样的:

Error: read ECONNRESET at TCP.onStreamRead 
- - errno: -104,
- - code: 'ECONNRESET',
- - syscall: 'read'
- - }

MaxRetriesPerRequestError: Reached the max retries per request limit (which is 20). Refer to "maxRetriesPerRequest" option for details.

this my code:

const imageQueue = new Bull("imageQueue", process.env.REDIS_URL);

添加tls成功解决错误

const imageQueue = new Bull("imageQueue", process.env.REDIS_TLS_URL, {
redis: { tls: { rejectUnauthorized: false } },
});

bull使用ioredis进行连接,并允许在Queue构造函数中使用第三个options参数。根据源代码,它会在这些选项中查找redis属性。

您可以尝试将重试限制提高到100。

const opts = {redis:{maxRetriesPerRequest:100}}
const imageQueue = new Bull("imageQueue", process.env.REDIS_URL, opts);

但是,同样,你可能使用Heroku的redis服务比他们允许的免费层更密集(如果这是你使用的)。

你可以按照npm包文档中的建议做类似的事情。

// This is the default value of `retryStrategy`
retryStrategy(times) {
const delay = Math.min(times * 50, 2000);
return delay;
},
});

https://www.npmjs.com/package/ioredis user-content-auto-reconnect

你需要在创建公牛队列时发送这个redis配置。

最新更新