我在分布式系统上使用mysql的ActiveRecord后端使用延迟作业。每当我重新启动mysql数据库时,工作人员都将停止。根据日志,每个工作人员尝试以5秒的间隔重新连接8次,然后以FATAL -- : MySQL client is not connected
消息退出。
这意味着每次我重新启动数据库时,我也必须重新启动我的所有工作程序。
是否可以增加重新连接尝试的次数?
答案 0 :(得分:0)
在工作中:
class MyJob < ActiveJob::Base
retry_on(YourMySQLException, wait: 10.seconds, attempts: 10)
end
如果您希望此重试行为是所有作业的默认设置,请考虑将此行放在ApplicationJob
中,并让所有作业继承自此。
官方文档的默认值与您从日志中推断出的默认值不同,但我想这没关系=> https://edgeapi.rubyonrails.org/classes/ActiveJob/Exceptions/ClassMethods.html#method-i-retry_on
尽管如此,另一个问题可能是:为什么需要重启mysql?在生产环境中应该不会发生这种情况...