ZeroMQ는 Publish/Subscribe, Request/Respond 등의 프로토콜을 구현하는 경량 메시징큐 라이브러리입니다. 리눅스에서는 apm이나 yum과 같은 패키지 인스톨러를 통해서 간단히 설치할 수 있지만, 윈도우에서는 최신 버전이 바이너리로 제공되지 않기 때문에 직접 소스코드를 컴파일해야 합니다.
준비
ZeroMQ 다운로드
GitHub에서 최신 버전의 zip 파일을 받아 임의 폴더에 임시로 압축을 해지합니다. 여기서는 C:\zeromq-4.2.5 폴더로 가정한다.
CMake 설치
CMake 최신 버전의 x64 인스톨러를 받아 설치합니다. CMake는 과거 Makefile이 갖는 복잡하고 번거로운 절차를 줄여주는 것이 주된 기능인데, 여기서는 단일한 소스코드를 여러가지 플랫폼에서 컴파일하게 도와주는 역할을 합니다.
Visual Studio Community 2017 설치
Visual Studio Community 2017는 개인 개발자라면 무료로 설치할 수 있습니다. 1메가 정도의 인스톨러를 받으면, 셀 수 없이 많은 패키지들을 선택해 설치를 진행하게 되는데 Workloads - Windows - Desktop development 선택 후 아래 3개의 패키지만 남기고 나머지는 제거해도 무방합니다.
- VC++ 2017 version 15.7
- Windows 10 SDK
- Visual C++ tools for CMake
컴파일
CMake로 컴파일 준비하기
앞서 소스코드의 압축을 해제해 놓은 C:\zeromq-4.2.5 디렉토리에서 아래의 명령어를 실행하면 build 디렉토리에 ZeroMQ.sln 파일을 비롯한 Visual Studio 솔루션 파일이 생깁니다.
cd C:\zeromq-4.2.5
md build
cmake -H. -Bbuild -G"Visual Studio 15 2017 Win64" -DENABLE_CURVE=OFF \
-DZMQ_BUILD_TESTS=OFF -DCMAKE_SYSTEM_VERSION=10.0 \
-DWITH_PERF_TOOL=OFF -DENABLE_CPACK=OFF -DCMAKE_BUILD_TYPE=Release
Visual Studio 2017로 컴파일하기
ZeroMQ.sln 파일을 실행해 Visual Studio 2017의 솔루션 창에서 INSTALL 항목을 빌드합니다. Release, Debug 각각 빌드하면 C:\Program Files\ZeroMQ 폴더에 .dll 파일은 물론 .h 파일과 .lib 파일이 설치됩니다. 참고로 파일명 중간에 gd 키워드가 들어간 것이 Debug로 컴파일된 바이너리입니다.
C:\Program Files\ZeroMQ>tree
├───bin // libzmq-v141-mt-4_2_5.dll ...
├───include // zmq.h zmq_utils.h
└───lib // libzmq-v141-mt-4_2_5.lib ...
결론
ZeroMQ는 Apache Kafka와 같이 별도의 독립된 메시지 Broker가 서버의 형태로 동작하지 않습니다. ZeroMQ는 말그대로 Brokerless 메시징큐이며, ZeroMQ를 사용한다는 것은 곧 .dll (또는 .lib) 파일 형태로 라이브러리를 활용한다는 것입니다. 이제 컴파일한 라이브러리로 개발에 활용할 차례입니다.