工作。隊列顯示消費者不再存在,我假設發生的事情是RabbitMQ繼續向消費者傳遞消息。它們表現爲不斷增加的未消息信息數量。我使用php-amqplib在PHP中執行此操作。的RabbitMQ無法獲得與心跳我所觀察到的RabbitMQ「卡住」與UNACKED消息PHP-amqplib
我可以通過殺死消費者進程(命令行上的控制-C)產生的問題。
我試圖指定3秒的心跳,並試圖保持活躍真假兩。有了心跳,消費者最終將失敗:
Exception fwrite(): send of 573 bytes failed with errno=32 Broken pipe
PhpAmqpLib\Wire\IO\StreamIO->error_handler(8, 'fwrite(): send ...',
php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php(281): fwrite(Resource id #176, '\x01\x00\x01\x00\x00\x00\x15\x00<\x00(\x00\x00\fb...', 8192)
問題#374可能涉及:https://github.com/php-amqplib/php-amqplib/issues/374
消費者從多個隊列耗時,但我認爲,不應該的問題。
我試圖解決的問題是,RabbitMQ繼續認爲,消費者存在時,它沒有,結果是RabbitMQ無處傳遞這些消息,他們去不承認。我正在尋找一種擺脫虛假連接的方式,以便這些消息可以重新傳送給現場消費者。我認爲這就是心跳,但我沒有得到它的工作。
死的TCP連接你有沒有在你的消費者自動啓用ACK? – cantSleepNow
我不知道。消息工作完成後,我需要通過ack進行節流。 –