[c++] ZeroMQ 데이터 처리

이 블로그에서는 ZeroMQ를 사용하여 데이터를 송수신하고 처리하는 방법에 대해 소개하겠습니다.

개요

ZeroMQ는 메시지 지향 미들웨어 라이브러리로서, 빠르고 가벼우며 다양한 프로토콜을 지원합니다. 이를 통해 분산 시스템에서 데이터를 효율적으로 전달하고 처리할 수 있습니다.

데이터 송수신

우선, ZeroMQ를 사용하여 데이터를 송수신하는 방법을 알아보겠습니다.

데이터 송신

#include <zmq.hpp>
#include <string>

int main() {
    zmq::context_t context(1);
    zmq::socket_t socket(context, ZMQ_PUSH);
    socket.connect("tcp://localhost:5555");

    std::string data = "Hello, ZeroMQ!";
    zmq::message_t message(data.size());
    memcpy(message.data(), data.c_str(), data.size());
    socket.send(message);

    return 0;
}

데이터 수신

#include <zmq.hpp>
#include <string>

int main() {
    zmq::context_t context(1);
    zmq::socket_t socket(context, ZMQ_PULL);
    socket.bind("tcp://*:5555");

    zmq::message_t message;
    socket.recv(&message);
    std::string data(static_cast<char*>(message.data()), message.size());

    std::cout << "Received: " << data << std::endl;

    return 0;
}

데이터 처리

이제 송수신한 데이터를 처리하는 방법에 대해 알아봅시다.

데이터 처리기

#include <zmq.hpp>
#include <string>

int main() {
    zmq::context_t context(1);
    zmq::socket_t receiver(context, ZMQ_PULL);
    receiver.bind("tcp://*:5555");

    zmq::socket_t sender(context, ZMQ_PUSH);
    sender.connect("tcp://localhost:5556");

    while (true) {
        zmq::message_t message;
        receiver.recv(&message);
        std::string data(static_cast<char*>(message.data()), message.size());

        // 데이터 처리
        data += " Processed";

        zmq::message_t newMessage(data.size());
        memcpy(newMessage.data(), data.c_str(), data.size());
        sender.send(newMessage);
    }

    return 0;
}

마무리

이렇게 ZeroMQ를 사용하여 데이터를 송수신하고 처리할 수 있습니다. ZeroMQ를 통해 효율적이고 빠른 데이터 통신을 구현할 수 있으며, 다양한 응용 프로그램에 유용하게 사용할 수 있습니다.

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