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


Showing Output of request from a message queue

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

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

PS:这里的输出是用户特定的,取决于输入。因此,每个用户都将拥有唯一的输出。

通常消息都是像Antonio所说的那样用于后台处理,但您可以在后台处理完成后轮询(或使用websocket推送)以获得结果。基本上,每当你点击某个东西后,在网站上看到进度条或微调器时,就会发生这种情况。

所以这个过程是:

  • 用户提交请求(单击按钮或执行某些操作)
  • 将消息放入队列(在您的情况下为IronMQ)进行处理,并立即向用户返回响应,这样用户就不必等待处理
  • 显示给用户的页面将开始轮询以检查任务是否完成,并且通常会有一些指示正在发生的事情(进度条或微调器或"请等待处理")
  • 辅助进程接收消息并对其进行处理
  • 完成后,worker将结果存储在数据存储中(缓存、数据库、s3等)
  • 正在轮询的页面将通过检查数据存储来知道任务已完成,然后显示结果

以下是一篇关于各种投票选项的好文章:http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery