mysql で Amazon SQS メッセージ選択メカニズム (排他的選択) をシミュレートする方法はありますか? 行を処理して削除する複数のec2インスタンスに1つのmysqlテーブルを使用するには、これが必要です。
select ... for update
選択時にスレッドをロックし、ロックされていないインスタンスを返さないため、私が望むものとはまったく異なります。
mysql で Amazon SQS メッセージ選択メカニズム (排他的選択) をシミュレートする方法はありますか? 行を処理して削除する複数のec2インスタンスに1つのmysqlテーブルを使用するには、これが必要です。
select ... for update
選択時にスレッドをロックし、ロックされていないインスタンスを返さないため、私が望むものとはまったく異なります。
最終的に私はこのアイデアに行き着きました(現在は実装されていません):
ターゲット テーブルを変更し、列を追加します lock_name, lock_time
各反復で:
2.1. update target_table set lock_time = now(), lock_name = 'controller_instance_name' where lock_time < now() - visibilityTimeout
2.2. select * from target_table where lock_name = 'controller_instance_name' and lock_time > now() - visibilityTimeout
select の各項目に対して 2.3
2.3.1 処理する
2.3.2 テーブルから削除します: target_table から削除します。ここで id = ?
各コントローラー インスタンスは、visibilityTimeout 値以上にロックされた後に行を選択できるようになります。