Open Libero82 opened 3 years ago
Для сохранения коннекта, требовалось добавить поддержку Heartbeat. Для версии 1.10 был переопределен класс handler-а
class MyEventHandler : public AMQP::LibEventHandler { public: MyEventHandler(struct event_base evbase) : AMQP::LibEventHandler(evbase) {} / virtual void onError(AMQP::TcpConnection connection, const char message) { std::cout << "ERROR: " << message << std::endl; } / virtual void onHeartbeat(AMQP::TcpConnection connection) { connection->heartbeat(); } };
RabbitMQClient::RabbitMQClient(): readQueue(1), connection(nullptr) {
eventLoop = event_base_new();
//handler = new AMQP::LibEventHandler(eventLoop);
handler = new MyEventHandler(eventLoop);
}
@Libero82 Сделано в сборке https://github.com/BITERP/PinkRabbitMQ/releases/tag/dev2.0.2.12. Прошу протестировать.
Необходимо подключиться к кролику и ожидать сообщения.
Клиент.Connect("127.0.0.1", 5672, "user", "password", "vhost");
Потребитель = Клиент.BasicConsume(ИмяОчереди, "", Истина, Ложь, 0);
Но примерно через 3 минуты соединение разрывается. Похожая проблема описана здесь и дано решение. Connection lost error after ~3 minutes.
Как добавить обработку onHeartbeat ?
virtual void onHeartbeat(AMQP::TcpConnection *connection) {
std::cout << "heartbeat" << std::endl;
connection->heartbeat();
}
P.S. Не силен в c++, поэтому обращаюсь к сообществу :)