我有一个应该始终运行的“生产者”,但似乎在一天左右之后,它仍然能够将消息发送到它之前声明的队列,但是当尝试声明一个新队列时,它会爆炸:
'PhpAmqpLib\Exception\AMQPHeartbeatMissedException' with message 'Missed server heartbeat' in /php-amqplib/php-amqplib/PhpAmqpLib/Wire/IO/AbstractIO.php:140
我以为心跳只针对消费者(因为没有地方检查生产者的心跳)?当我不是“消费者”时检查心跳是否是一个错误?
还是当我声明队列时我的脚本也成为“消费者”,因为它需要“消费”来自服务器的反馈,即队列已准备好使用或其他什么?
它目前的设置方式,我可以定期使用什么解决方法来检查它是否queue_declare
会在运行时爆炸,这样当我确实需要运行queue_declare
时它不会意外爆炸?
我正在使用AMQPSSLConnection
最新版本(2.9.2),并且$connection->isConnected()
一直在返回true
。心跳设置为 15 秒。