問題文の私は労働者にジョブをキューにcronを持ってSQS労働者のタイムゾーンを意識
してください。作業者は電子メールをユーザーに送信します。ジョブは異なる国のためにキューに入れられます。メールは、各国の午前11時から午後5時までに送信する必要があります。つまり、オーストラリアからのユーザーへのメールはオーストラリア時間で午前11時から午後5時までに送信する必要があります。私は
を試してみた何
ジョブのそれぞれは、それがタイムゾーンだ知っています。ジョブの読み取り時に、時間要件と一致しない場合は、キューから削除され、遅延が追加されます。遅延は、次の許容可能な時間フレームと現在の時間との差に基づいて計算される。
しかし、この解決策の問題は、遅延が通常17-18時間であることです。 AmazonのSQSには最大15分の遅延があります。 1つの回避策は毎回5分ずつジョブを遅らせることができますが、17-18時間で同じジョブが何度も選択されるため非効率です。
もう一つの非常に非効率的な解決策は、各国に複数の労働者を置くことです。
現在、オーストラリアのジョブのcron行が11 AMに設定されているため、許容できる時間にジョブをキューイングするために、同じコマンドの複数のcronエントリがあります。つまり、オーストラリアのジョブは11 AMにキューに入れられます。
私はこれを解決するための効率的なメカニズムを探しています。すべてのアイデアは大歓迎です。誰かが私を助けてくれますか?また、これらの問題の標準的な方法は何ですか?
あなたの答えはマイケルに感謝します。また、可視性のタイムアウトとは別に問題を処理する他の方法を提案できますか? – Gargee
データベースに「後で保存」メッセージを保存します。予定された納品時間はインデックス付きの列に保存され、SQSから削除されます。 SQSポーリングの各ラウンドの後に、delivery_time
Michaelが示唆したことは、あなたの問題に対する最良のアプローチです。別の選択肢は、国固有の待ち行列および労働者を有することであり、労働者はその国の窓が開いているときにのみ投票する。これにより、SQSのコストが大幅に削減されます。 –