MySQL をジョブ キューとして使用したいと考えています。複数のマシンがジョブを生成および消費します。ジョブをスケジュールする必要があります。毎時間実行されるものもあれば、毎日実行されるものもあります。
それはかなり簡単に思えます: 各ジョブに「nextFireTime」列があり、ワーカー マシンに nextFireTime でジョブを検索させ、レコードのステータスを「inProcess」に変更し、ジョブが終了したら nextFireTime を更新します。
問題は、労働者が静かに死ぬときに発生します。nextFireTime を更新したり、ステータスを「idle」に戻したりすることはできません。
残念ながら、ジョブは長時間実行される可能性があるため、inProcess が長すぎるジョブを探すリーパー スレッドはオプションではありません。機能するタイムアウト値はありません。
信頼性の低いワーカー マシンを適切に処理する設計パターンを提案できる人はいますか?