显示来自消息队列的请求输出

时间:2013-08-29 12:37:44

标签: php laravel-4 message-queue amazon-sqs iron.io

我正在开发一个我正在使用消息队列的应用程序。 工作流程如下所示 用户提交请求 - >请求进入队列 - >处理任务 - >向用户显示输出。

我目前正在使用Iron MQ,可能还有使用Laravel PHP的Amazon SQS(取决于性能)。我已经能够将消息发送到队列,但无法向用户显示输出。我在这里错过了什么吗?我是否需要将输出写入数据库/文件,然后连续轮询,然后将输出显示给用户? 任何帮助将不胜感激

PS:这里的输出是用户特定的,取决于输入。所以每个用户都会有独特的输出。

1 个答案:

答案 0 :(得分:1)

一般来说,消息是像Antonio说的那样用于后台处理,但你可以在后台进程完成后轮询(或使用websockets)来获取结果。基本上,只要您在点击某些内容后在网站上看到进度条或微调器,就会发生这种情况。

所以过程是:

  • 用户提交请求(点击按钮或执行某些操作)
  • 将消息放入队列(在您的情况下为IronMQ)进行处理,并立即向用户返回响应,以便用户无需等待处理。
  • 显示给用户的页面将开始轮询,以检查任务是否完成,并且通常会指示某些事情正在发生(进度条或微调器或“请等待处理”)。
  • 工作进程接收并处理它。
  • 完成后,worker将结果存储在数据存储(缓存,数据库,s3等)
  • 轮询页面将通过检查数据存储然后显示结果来了解任务已完成。

这是一篇关于各种民意调查选项的好文章:http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery