2013-08-29 3 views
1

Я разрабатываю приложение, в котором я использую очередь сообщений. Рабочий процесс показан ниже. Пользователь отправляет запрос -> запрос переходит в очередь -> обрабатывает задачу -> показать вывод пользователю.Отображение результата запроса из очереди сообщений

В настоящее время я использую Iron MQ и, возможно, Amazon SQS (зависит от производительности) с Laravel PHP. Я смог отправить сообщение в очередь, но не смог отобразить вывод для пользователя. Я что-то упустил? Нужно ли мне записывать вывод в базу данных/файл, а затем опросить его непрерывно, а затем показать результат пользователю? Любая помощь будет очень благодарна

PS: Здесь вывод зависит от пользователя и зависит от ввода. Таким образом, каждый пользователь будет иметь уникальный выход.

+0

не ответ на ваш вопрос, но это может помочь вам: http://vimeo.com/64703617/HTTP: //blog.iron .io/2013/05/laravel-4-ironmq-push-queues-insane.html – Gadoma

+0

Сообщения предназначены для фоновой обработки (отправка писем, обработка изображений, утверждение кредитной карты ...), я не вижу рабочего процесса, вы получаете свое сообщение и результат отправляется обратно пользователю прямо на веб-страницу, вам может потребоваться опрос вашей базы данных, чтобы получить статус ваших задач. –

+0

Хорошо спасибо, в этом случае я предполагаю, что мне пришлось использовать базу данных. Я новичок в очередях, так что это может быть глупо. Но возможно ли использовать еще одну очередь в качестве выходной очереди, и браузер читает очередь, пока не найдет сообщение с правильным идентификатором пользователя и не отобразит результат? – ace120387

ответ

1

Обычно сообщения предназначены для фоновой обработки, как сказал Антонио, но вы можете опросить (или нажать с помощью веб-карт), чтобы получить результаты после завершения фонового процесса. В принципе, когда вы видите индикатор выполнения или spinner на веб-сайте после того, как вы что-то нажали, это то, что происходит.

Так процесс:

  • Пользователь отправляет запрос (нажимает на кнопку или совершает какое-либо действие)
  • сообщение помещается в очередь (IronMQ в вашем случае) для обработки и ответ немедленно возвращается пользователю, поэтому пользователю не нужно ждать обработки.
  • Страница, отображаемая пользователю, начнет опрос, чтобы проверить завершение задачи и, как правило, будет иметь индикатор того, что что-то происходит (индикатор выполнения или счетчик или «пожалуйста, подождите при обработке»).
  • Рабочий процесс поднимает сообщение и обрабатывает его.
  • После завершения работ работник хранит результаты в хранилище данных (кеш, база данных, s3 и т. Д.).
  • 44 Страница
  • Страница, которая будет опроса, будет знать, что задача завершена путем проверки хранилища данных и последующего отображения результатов.

Вот хорошая статья о различных вариантах голосования: http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

+0

Спасибо за ответ. Это именно то, что я искал – ace120387