2011-04-23 41 views
1

有沒有什麼辦法來模擬mysql上的Amazon SQS消息選擇機制(獨佔選擇)?我需要這個爲多個ec2實例使用一個mysql表來處理和刪除行。mysql:獨家選擇像SQS?

select ... for update並不完全符合我的要求,因爲它在select上鎖定了一個線程,並且不返回未鎖定的實例。

回答

0

最後我來到了這個想法(現在不執行):

  1. ALTER目標表,列添加lock_name,lock_time

  2. 在每次迭代:

2.1。更新target_table設置lock_time = now(),lock_name ='controller_instance_name'其中lock_time < now() - visibilityTimeout

2.2。 SELECT * FROM target_table其中lock_name = 'controller_instance_name' 和lock_time>現在() - visibilityTimeout

2.3在選取

2.3.1手柄的每個項目它

2.3.2從表中刪除:刪除from target_table where id =?

每個控制器實例將能夠在鎖定超過visibilityTimeout值後選擇行。