问题描述
我最近将 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 (将#修改为@)