2015-09-23 4 views
1

Прежде всего, я объявляю обмен, очередь и привязываю их togerther. i basicPublish сообщение в эту очередь, так что есть одно сообщение в очереди. В это время я запускаю свою потребительскую программу (с autoAck = true) и отлаживаю ее, когда я запускаю basicConsume (xxx), сообщение было потеряно! По-моему, потребитель отправит basic.ack броузеру, когда он будет запущен методом nextDelivery(), но на самом деле, когда я объявлю потребителя, будет отправлено сообщение в очереди. Зачем? Может ли кто-нибудь сказать мне, когда rabbitmq удалит сообщение из очереди? после метода basicConsume() или nextDelivery() ??? ТНХ ~~~когда rabbitmq удаляет сообщение из очереди?

ответ

1

autoAck = истинный

из-за этого

вы рассказываете RabbitMQ автоматически подтвердить сообщение, когда он потребляется. подтверждение сообщения сообщает RabbitMQ, что он позаботился, и RabbitMQ может удалить его сейчас.

set autoAck to false, если вы хотите вручную подтвердить сообщение после завершения его обработки.

+0

спасибо Derick Bailey! Я вчера прочитал исходный код. Я обнаружил, что он примет сообщение и сохранит его в локальной очереди, когда я начну использовать потребитель, не запустив nextDelivery(). –

Смежные вопросы