用于多媒体处理的 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 (将#修改为@)