【发布时间】:2015-05-12 21:28:06
【问题描述】:
我知道这个问题不止一次被问到,但这一次是不同的。
我正在使用PhpAmqpLib(2.5.1 版)和 RabbitMq(3.5.1 版)。我创建了一个 Symfony 包,它能够抓取网站并使用工作队列在多个线程中运行它。
该脚本的基本作用是从队列中挑选一个项目,提取应抓取的 URL,然后对其进行抓取。当在抓取的页面上找到新的 URL 时,这些 URL 将作为队列中的新作业发布。
捆绑包位于此处:https://github.com/keesschepers/concurrent-spider-bundle
我收到以下错误:PRECONDITION_FAILED - unknown delivery tag xxx(其中 xxx 是一个变化的数字,但通常是 1、21 或 30。
总是在处理大约 30 个 url 时。
到目前为止我做了什么:
- 注册多个频道(一个用于发布,一个用于消费)
- 发挥交付模式和耐用性
如果你用谷歌搜索这个错误,很多人会说你在 no_ack=true 时尝试确认消息,但在我的情况下这是错误的。
谁能告诉我应该从哪里开始调试?
stacktrace如下:
Exception trace:
() at /home/vagrant/sim-search-admin/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Channel/AMQPChannel.php:191
PhpAmqpLib\Channel\AMQPChannel->channel_close() at n/a:n/a
call_user_func() at /home/vagrant/sim-search-admin/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Channel/AbstractChannel.php:170
PhpAmqpLib\Channel\AbstractChannel->dispatch() at /home/vagrant/sim-search-admin/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Channel/AbstractChannel.php:362
PhpAmqpLib\Channel\AbstractChannel->wait() at /home/vagrant/sim-search-admin/vendor/simgroep/concurrent-spider-bundle/Queue.php:66
Simgroep\ConcurrentSpiderBundle\Queue->listen() at /home/vagrant/sim-search-admin/vendor/simgroep/concurrent-spider-bundle/Command/CrawlCommand.php:62
Simgroep\ConcurrentSpiderBundle\Command\CrawlCommand->execute() at /home/vagrant/sim-search-admin/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:257
Symfony\Component\Console\Command\Command->run() at /home/vagrant/sim-search-admin/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:882
Symfony\Component\Console\Application->doRunCommand() at /home/vagrant/sim-search-admin/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:195
Symfony\Component\Console\Application->doRun() at /home/vagrant/sim-search-admin/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/vagrant/sim-search-admin/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:126
Symfony\Component\Console\Application->run() at /home/vagrant/sim-search-admin/app/console:28
不知何故,频道似乎已关闭,这是不应该发生的。
当我在一个线程中运行它时,这个错误已经发生了。
【问题讨论】: