Очередь заданий с повторным использованием BLPOP - PullRequest
11 голосов
/ 30 августа 2011

Я пытаюсь создать бесконечную очередь заданий, используя redis и ruby ​​eventmachine.Для этого я использую команду redis BLPOP с таймаутом 0.После успешного BLPOP я снова запускаю его.

Я на правильном пути или есть лучший способ создать очередь заданий с помощью redis?

1 Ответ

6 голосов
/ 02 декабря 2012

Если вы используете только BLPOP для удаления сообщения из очереди, а ваш получатель сообщения не может его обработать, сообщение нужно будет поставить в очередь, чтобы оно не исчезло навсегда вместе с отказавшим получателем.

Для более длительной обработки сообщений необходимо вести список обрабатываемых сообщений, чтобы их можно было поставить в очередь в случае сбоя.

[B] RPOPLPUSH идеально подходит для этого сценария; он может атомарно извлекать сообщение из очереди сообщений и помещать его в очередь обработки, чтобы приложение могло ответить в случае сбоя на стороне потребителя.

http://redis.io/commands/rpoplpush

Фактическое добавление в очередь остается за приложением, но эта команда redis обеспечивает основу для этого.

Существует также несколько внедренных в очередь реализаций очередей с использованием redis, плавающих по сети, таких как RestMQ [http://www.restmq.com/]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...