mysql:独家选择喜欢SQS?

时间:2011-04-23 18:50:33

标签: mysql sql concurrency amazon-sqs

有没有办法在mysql上模拟Amazon SQS消息选择机制(独占选择)?我需要这个为一个将处理和删除行的多个ec2实例使用一个mysql表。

select ... for update并不是我想要的,因为它将一个线程锁定在select上,而不是返回未锁定的实例。

1 个答案:

答案 0 :(得分:0)

最终我想到了这个想法(现在没有实现):

  1. 更改目标表,添加列lock_name,lock_time

  2. 每次迭代:

  3. 2.1。 update target_table set 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> now() - visibilityTimeout

    2.3,对于选择

    中的每个项目

    2.3.1处理它

    2.3.2从表中删除它:从target_table中删除id =?

    每个控制器实例在锁定后都可以选择行,而不是在visibilityTimeout值上。