rabbitmq c++ 예제

그러나 더 중요한 것은 위의 예제에서 연결 개체를 만든 직후에 채널 개체를 인스턴스화하고 교환 및 큐를 즉시 선언하기 시작했다는 것입니다. 그러나 연결 개체를 처음 만들 때 서버와 클라이언트 간에 핸드셰이크 프로토콜이 실행됩니다. 이 핸드셰이크 절차 중에는 채널 열기 또는 큐 선언과 같은 다른 지침을 보낼 수 없습니다. 따라서 연결이 준비될 때까지 기다렸다면(MyConnectionHandler::onReady() 메서드를 구현하고 채널 개체를 만드셨을 것입니다. 그러나 이것은 엄격하게 필요하지 않습니다. 핸드셰이크가 완료되기 전에 호출되는 메서드는 AMQP 라이브러리에 의해 캐시되며 핸드셰이크가 완료되고 연결이 사용 될 때 실행됩니다. 지정된 코드를 실행할 때 사용할 수 있는 다양한 순열이 있습니다. 생산자와 소비자를 모두 Python 스크립트로 만들 수 있습니다. 또는 다른 둘 다 C ++ 응용 프로그램입니다. 아마도 더 유용한 것은 예를 들어 C ++ 생산자가 파이썬 소비자에게 메시지를 보내거나 그 반대의 경우도 마찬가지입니다. 이 원시 설정에서 AMQP-CPP 라이브러리는 자체적으로 IO를 수행하지 않으므로 라이브러리가 소켓에서 데이터를 수신할 수도 없습니다.

이 작업을 수행하는 것은 다시 당신에게 달려 있습니다. 예를 들어 이벤트 루프에서 RabbitMQ 서버와 연결된 소켓을 읽을 수 있게 되면 해당 소켓(예: recv() 시스템 호출사용)을 읽고 수신된 바이트를 AMQP-CPP 라이브러리에 전달해야 합니다. 이 작업은 연결 개체에서 구문 분석() 메서드를 호출하여 수행됩니다. C ++ 응용 프로그램의 경우 Alan Antonuk의 rabbitmq-c 클라이언트 라이브러리를 사용하고 있습니다. 이 라이브러리의 소스 코드는 github에서 찾을 수 있습니다. 이 라이브러리를 빌드하고 사용하려면 좀 더 많은 작업이 필요합니다. 먼저 CMake 도구를 사용하여 확인 파일을 구성하고 실행해야합니다. OpenSSL 및 POpt를 사용하지 않기로 결정했습니다. CMake를 실행한 후 Visual Studio 2017에서 생성된 솔루션 파일을 열었습니다. 그런 다음 C ++ rabbitmq-c 클라이언트를 컴파일하고 빌드했습니다. 이렇게 하면 동적 연결을 위한 librabbitmq.4.lib, 정적 라이브러리 및 rabbitmq.4.lib 와 rabbitmq.dll이 생성됩니다. Channel 클래스의 다른 많은 메서드와 마찬가지로 declareQueue() 메서드는 `flags`라는 정수 매개 변수를 허용합니다.

메서드 위의 설명서에 설명된 모든 옵션을 요약하여 메서드별 옵션을 설정할 수 있는 변수입니다. 예를 들어 지속적이고 자동으로 삭제된 큐를 만들려면 AMQP::dururable + AMQP::autodelete 값을 전달할 수 있습니다. CMake 파일은 건물 및 설치를 모두 지원합니다. 설치 기능을 사용하지 않도록 선택할 수 있으며 대신 빌드/bin/에서 빌드 출력을 수동으로 사용할 수 있습니다. TCP 모듈은 Linux에서만 지원됩니다. 예를 들어 설치 방법은 다음과 같습니다 안녕하세요 Petz, 아주 좋은 기사, 나는 토끼mq에 메시지를 게시하려고, c ++ 단계를 따라, 그러나 나는 예외를 받고있어요 “소켓 오류가 발생했습니다”.