[c++] ZeroMQ 분산 시스템 연결

오늘은 C++에서 ZeroMQ를 사용하여 분산 시스템을 구축하는 방법에 대해 알아보겠습니다.

ZeroMQ란?

ZeroMQ는 높은 성능의 메시징 라이브러리로, 다양한 언어에서 사용할 수 있으며 소켓(Socket)과 유사한 API를 제공합니다. 이를 통해 분산 시스템을 쉽게 구축하고 통신할 수 있습니다.

환경 설정

먼저 C++ 환경에서 ZeroMQ를 사용하기 위해 ZeroMQ 라이브러리를 설치해야 합니다. 각 운영체제에 따라 설치 방법이 다르므로 해당 운영체제에 맞는 설치 방법을 찾아 진행하시길 바랍니다.

ZeroMQ Publisher-Subscriber 패턴 예제

// publisher.cpp
#include <zmq.hpp>
#include <string>
#include <iostream>

int main () {
    zmq::context_t context(1);
    zmq::socket_t publisher(context, ZMQ_PUB);
    publisher.bind("tcp://*:5556");

    while (true) {
        std::string msg = "Hello, World!";
        zmq::message_t message(msg.size());
        memcpy (message.data(), msg.c_str(), msg.size());
        publisher.send(message);
    }
}
// subscriber.cpp
#include <zmq.hpp>
#include <string>
#include <iostream>

int main () {
    zmq::context_t context(1);
    zmq::socket_t subscriber (context, ZMQ_SUB);
    subscriber.connect("tcp://localhost:5556");
    subscriber.setsockopt(ZMQ_SUBSCRIBE, "", 0);

    while (true) {
        zmq::message_t update;
        subscriber.recv(&update);

        std::string msg = std::string(static_cast<char*>(update.data()), update.size());
        std::cout << "Received: " << msg << std::endl;
    }
}

위의 예제는 Publisher-Subscriber 패턴을 사용하여 메시지를 발행하고 수신하는 간단한 예제입니다. Publisher는 “Hello, World!” 메시지를 주기적으로 발행하고, Subscriber는 해당 메시지를 수신하여 출력합니다.

결론

ZeroMQ를 사용하면 간편하게 분산 시스템을 구축하고 메시지를 교환할 수 있습니다. 이를 통해 시스템 간 통신을 손쉽게 구현할 수 있으며, 높은 성능을 제공합니다.

더 많은 정보를 원하신다면 ZeroMQ 공식 홈페이지를 참고하시기 바랍니다.