微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于多媒体处理的 RabbitMQ 消费者:最好的方法是什么?

如何解决用于多媒体处理的 RabbitMQ 消费者:最好的方法是什么?

我最近将 RabbitMQ 添加到我的一个项目中,其中视频将上传到网站,然后处理成 MPD。现在我有一个简单的发布者,它将使用工作人员将进行的转换过程的参数添加到队列消息中。先前启动的工作线程并在无限循环中运行:

while (count($channel->callbacks))
{
    $channel->wait();
}

我知道这是一个“阻塞消费者”,可以选择制作一个“非阻塞消费者”,如下所示:

try
{
    while (count($channel->callbacks)) 
    {
        $channel->wait($allowed_methods=null,$nonBlocking=true,$timeout=1);
    }
}
catch (Exception $e)
{
    print "There are no more tasks in the queue." . PHP_EOL;
}

我看到的“非阻塞消费者”的问题是,当异常启动时它会停止,这意味着如果有新任务添加到队列中,worker 将无法处理它们。

>

在这种情况下,我知道我应该使用具有无限循环的工人,但要采取一些措施以避免开销(我想我在 wait() 中读到了 3 秒的 sleep() 如果队列为空)。这个假设正确吗?

感谢您抽出宝贵时间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。