Я использую кролика с PHP на OSX.
Простой пример У меня одна длительная очередь с 50K надежными сообщениями.
Я запускаю потребительский скрипт. Вот пример этого скрипта:
...
while ($this->run) {
if ($message = $channel->basic_get("testq.{$this->id}")) {
$channel->basic_ack($message->delivery_info['delivery_tag']);
echo "{$message->delivery_info['routing_key']} (".$message->get('priority')."): {$message->body}\n";
$sleep = 15000; // usecs
} else {
usleep($sleep);
}
...
}
...
После запуска потребительского скрипта я вижу в rabbit webadmin, что количество сообщений из этой очереди уменьшается.
Кажется, все в порядке.
Если я убью скрипт PHP-потребителя с помощью CTRL + C и сценарий до остановки будет использован, например, 10K-сообщений, я вижу в этих 40K-сообщениях, оставшихся в очереди.
Все нормально.
Но если я убью rabbitmq с помощью kill -9 или CRLT + C, в то время как потребительский скрипт работает (я хочу имитировать сбой), после перезапуска количество сообщений в этой очереди восстанавливается до 50K ..
Я не понимаю почему? в чем может быть проблема?
Задача ещё не решена.
Других решений пока нет …