MySQL: эксклюзивный выбор, как SQS? - PullRequest
1 голос
/ 23 апреля 2011

Есть ли способ имитировать механизм выбора сообщений Amazon SQS в mysql (эксклюзивный выбор)? Мне нужно это использовать одну таблицу mysql для нескольких экземпляров ec2, которые будут обрабатывать и удалять строки из нее.

select ... for update не совсем то, что я хочу, потому что блокирует поток при выборе и не возвращает не заблокированные экземпляры.

1 Ответ

0 голосов
/ 09 июня 2011

В конце концов я пришел к этой идее (сейчас не реализован):

  1. изменить таблицу назначения, добавить столбцы lock_name, lock_time

  2. на каждой итерации:

2.1.обновить target_table set lock_time = now (), lock_name = 'controller_instance_name' где lock_time

2.2.выберите * из target_table, где lock_name = 'controller_instance_name' и lock_time> now () - visibilityTimeout

2.3 для каждого элемента в select

2.3.1 обработайте его

2.3.2удалить его из таблицы: удалить из target_table, где id =?

Каждый экземпляр контроллера сможет выбрать строку после того, как он был заблокирован больше, чем по значению visibilityTimeout.

...