消息队列 - 体系结构(任务+响应)

时间:2013-11-30 20:55:36

标签: rabbitmq activemq message-queue application-design web-application-design

我现在正考虑将消息队列用于“视频”项目。

对用户上传视频的视频服务进行成像,然后通过脚本制作屏幕截图,短视频缩略图和不同的视频大小(在momemnt中并不重要)。无论如何,更重要的是要考虑前端(网络上传服务器)和后端服务器(视频处理服务器)之间的通信。

所以过程可能是:

  1. 用户访问该网站
  2. 用户上传新视频
  3. 上传脚本将新消息添加到消息队列(嘿,有新视频,处理它)
  4. 在此状态下,用户可以在“已上传”状态
  5. 的视频列表中看到该视频

    这是我实际上不知道该怎么做的部分。

    1. 消费者从消息队列中获取消息并开始处理它。
    2. 消费者检测到它是视频 - 如果现在它将失败
    3. 消费者制作截图(需要很长时间才能完成),消费者会通知网络屏幕截图已经制作(??? How ??? - 我应该把新消息放到消息队列中吗?)
    4. 消费者调整视频大小(需要很长时间才能完成) - 同样的问题 - 消费者如何通知网站,视频调整大小已经完成?
    5. 所以,问题是如何处理来自后端服务器的消息。我猜消费者会将另一条消息放到某个日志队列中,其他网络消费者会处理它们并更新数据库。是不是?

1 个答案:

答案 0 :(得分:2)

只需创建两个队列:一个用于作业,第二个用于响应。

过程:

  • USER - >工作队列 - >工人(S)
  • 工作人员 - >消息队列 - > USER

第二个消费者可以是一切 - 将结果写入数据库的过程,或者 - 例如 - 立即发送通知的WebSocket服务器。