У меня есть процесс, который каждую минуту отправляет сообщения SQS. Важно, чтобы сообщения отправлялись каждую минуту, поэтому я планирую запускать процесс на нескольких экземплярах, чтобы он был более отказоустойчивым.
Несмотря на то, что он работает в нескольких экземплярах, я хочу, чтобы сообщения SQS отправлялись только один раз в минуту. Итак, если машина A отправляет сообщения, я не хочу, чтобы машина B отправляла их, и наоборот.
Я хочу избежать настройки главного / подчиненного устройства.
Я подумал об использовании отдельной очереди SQS для отправки сообщения о завершении, которое может быть получено одним из процессов, чтобы начать отправку сообщений и отправить сообщение о завершении после завершения / через минуту, но если сообщение о завершении не отправляется, потому что из-за сбоя или другой проблемы, цикл которой будет завершен, это неприемлемо.
Я также подумал о том, чтобы процесс, который отправляет сообщения, помещал метку времени в simpleDB или, возможно, в другую базу данных, и чтобы процессы проверяли метку времени через определенный интервал. Первый, который проверяет его и обнаруживает, что он старше минуты, обновит метку времени и отправит сообщения.
Я исследовал SWF и обнаружил, что он может запускать рабочие процессы / действия по таймеру, но SWF кажется излишним для этого, и я бы предпочел избегать его настройки и запуска с доступом к моей БД.
Есть ли у кого-нибудь изящное решение подобных проблем?