我正在使用 npm bull 添加我的队列作业来处理为我的项目发送邮件。运行了很长一段时间都没有问题,但是最近却出现这样的错误: 处理任务收集指标时出错:达到每个请求的最大重试次数限制(10 次)。有关详细信息,请参阅“maxRetriesPerRequest”选项。 我检查了redis-cli: key *,它没有显示任何密钥。 bull 模块支持 @bull-monitor/express 来监视作业,但由于错误显示,我无法访问监视器
当我将应用程序部署到生产环境时,我也遇到了这个问题。事实证明,Bull.js 不会自动允许通过 TLS 进行 Redis 连接,尤其是生产环境已经在通过 TLS 运行这一事实。所以对我来说解决这个问题的方法是在队列的 Redis 选项中将
tls
设置为 true
,并将 enableTLSForSentinelMode
设置为 false
。这是示例代码:
const myQueue = new Queue('my_queue', YOUR_REDIS_URL, {
redis: { tls: true, enableTLSForSentinelMode: false },
...other queue options
})
Bull 找不到要连接的 Redis。 我在本地环境中使用 bull 没有问题,在云上 bull 向我显示了同样的错误。
所以在本地环境中它连接到127.0.0.1:6379,但在云中你没有这个端口,所以你需要指定redis的用户名,redis的密码和redis的端口。
我能够通过在队列对象上设置一些配置设置来解决这个问题,如下所示:
export const networkUnreadsQueue = new Queue(
'Network Unreads Notifications',
process.env.REDIS_URL,
{
redis: { maxRetriesPerRequest: null, enableReadyCheck: false },
}
);
或者,如果您正在使用牛板,则可以更新到较新版本的牛板,因为它使我的应用程序抛出相同的错误。 您可以看到 他们的 github 页面上正在讨论相同的问题,从而产生了修复该问题的版本
5.0.0
的 PR(但在 API 中对导入的结构进行了重大更改)。
您可以设置限制,例如如果您想要没有限制,只需设置 maxRetriesPerRequest: null。但也许这对性能等不利。