1

有什么方法可以模拟 mysql 上的 Amazon SQS 消息选择机制(独占选择)?我需要这个来为多个 ec2 实例使用一个 mysql 表,这些实例将处理和删除其中的行。

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

4

1 回答 1

0

最终我想到了这个想法(现在不实施):

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

  2. 在每次迭代中:

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

2.3 对于select中的每一项

2.3.1 处理它

2.3.2 将其从表中删除:从 id = 的 target_table 中删除

每个控制器实例在锁定超过 visibilityTimeout 值后将能够选择行。

于 2011-06-09T06:49:53.400 回答