1

Тема: Rabbit MQ статус выполнения задачи

Добрего всем времени суток.
Есть у меня такая задачка внедрить в проект систему очередей RabbitMQ. Собственно как он работает я понял и как отправлять задачи нескольким воркерам параллельно тоже, но вот как проверить статус их выполнения я понять не могу, в серой массе пишут что мол как то это можно но вот как я понять не могу да и не логично это было бы, что бы нельзя было проверить статус выполнения задачи.

Собственно вопрос у меня простой, как проверить статус выполнения задачи.

ЗЫ вопрос дурацкий, но как это сделать я понять не могу, помогите разобрать может я, что то упустил

2 Отредактировано daemon_master (2016-02-07 20:05:49)

Re: Rabbit MQ статус выполнения задачи

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

Перед отправкой сообщения, добавляете в редисе каком-нибудь новый ключ task:{id} со значением in_queue, когда его взял воркер, помечаете его как in_progress, если все прошло ок, то удаляете.  Но это если вам нужен какой-то контроль этих действий и отображать это пользователю.

В некоторых случаях можно просто не удалять сообщение из очереди. Т.е. по сути ваша задача когда-нибудь выполнится, когда это станет возможным, если только у вас нет проблем в самой логике воркера, т.к. можно нарваться на переполнение очереди.

И ещё один рецепт - это общаться по RPC. Т.е. перед отправкой сообщения создаёте новую анонимную очередь, в сообщение добавляете id-шку этой очереди, воркер, после того, как отработал, пишет в эту очередь о том, что закончил, и вы получаете это сообщение в том месте, где отправляли и продолжаете работу.

3

Re: Rabbit MQ статус выполнения задачи

Спасибо за ответ, собственно сделал как вы сказали, помечаю в memcache, есть такая задача или нет, ну а потом как она завершается то просто его оттуда удаляю.

4

Re: Rabbit MQ статус выполнения задачи

помечаю в memcache

Очень неудачный выбор для такого рода задачи. https://www.google.ru/webhp?sourceid=ch … ched%20lru