2011-04-23 81 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值后选择行。