Я работаю над многопользовательской игрой, и ей нужна очередь сообщений (т.е. сообщения, выходы, дубликаты или удаленные сообщения, предполагающие, что нет никаких выселений из кеша). Ниже перечислены очереди на основе memcache, которые я знаю:
- MemcacheQ: http://memcachedb.org/memcacheq/
- Starling: http://rubyforge.org/projects/starling/
- Depcached: http://www.marcworrell.com/article-2287-en.html
- Воробей: http://code.google.com/p/sparrow/
Я узнал концепцию очереди memcache от это сообщение в блоге:
Все сообщения сохраняются с целым числом в качестве ключа. Существует один ключ, который имеет следующий ключ и тот, у которого есть ключ самого старого сообщения в очереди. Для доступа к ним метод increment/decment используется как его атомный, поэтому есть два ключа, которые действуют как блокировки. Они увеличиваются, и если возвращаемое значение равно 1, процесс имеет блокировку, в противном случае он продолжает увеличиваться. Как только процесс завершится, он вернет значение 0. Простой, но эффективный. Одно из предостережений состоит в том, что целое число будет переполняться, поэтому существует некоторая логика, которая устанавливает используемые ключи в 1, когда мы близки к этому пределу. Поскольку операция приращения является атомарной, блокировка необходима, только если используются два или более memcaches (для избыточности), чтобы синхронизировать их.
Мой вопрос: существует ли служба очереди сообщений на основе memcache, которая может работать в App Engine?