Closed and-and-and closed 12 years ago
У вас Management plugin подключен? Перед запуском программы в очереди точно уже есть сообщения? (на всякий случай) Привязка к очереди создается сразуже или в процессе работы?
Все, перечитав сообщение понял проблему. Не совсем правильно видать поняли логику работы очередей и обменников. Берем некоторый момент времени, у нас есть обменник и к нему подключены 2 очереди, отправляем сообщение X, оно попадает в обе очереди. Подключается третий приемник, создает новую очередь, и привязывает ее к нашему обменнику. Посылаем сообщение Y, оно попадает уже в три очереди, но сообщение X, новый клиент никак уже получить не может. Если есть необходимость держать очередь в которую будут накапливаться сообщения, то очередь нужно создавать с флагом Durable, таким образом она не будет удалена при отключении (по умолчанию этот флаг не стоит). Сделать это можно так:
queue2_ = client_->createQueue();
queue2_->declare("test-queue1", QAMQP::Queue::Durable);
queue2_->bind("test", "test");
Спасибо большое за ответ. Не сразу сообразил, что флаги надо ставить для очереди, а не для обменника. Все заработало :)
Обращайтесь =) Рад, что хоть кому-то пригодился написанный код (кроме себя конечно же) =)
Здравствуйте. Никак не получается получить находящиеся сообщения в очереди вновь подключившемуся клиенту. Пробую примерно такой код (обменник test заранее создали и хотим подключиться), подключаемся, но сообщения не получаем: queue2 = client->createQueue("test-queue1"); queue2->declare(); queue2->bind("test","test"); Если отправлять сообщения после подключения, то они доходят. Не могли бы вы помочь?