ZeroMQ para C++: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

ZeroMQ para C++: mensagens de alto desempenho

1. O que é e para que serve

ZeroMQ (também conhecida como ØMQ, 0MQ ou zmq) é uma biblioteca assíncrona de troca de mensagens de alto desempenho, projetada para aplicações distribuídas e paralelas. Diferente de brokers de mensagens tradicionais (como RabbitMQ ou Kafka), o ZeroMQ não possui um servidor central. Em vez disso, ele fornece sockets que podem se conectar diretamente entre si, formando topologias arbitrárias (estrela, barramento, cluster, etc.). A biblioteca implementa vários padrões de troca: "requisição-resposta" (REQ/REP), "publicador-assinante" (PUB/SUB), "pipe" (PUSH/PULL) e outros.

Para que serve o ZeroMQ? No mundo moderno, o software raramente funciona isoladamente. Microsserviços, computação distribuída, sistemas em tempo real, chats, plataformas de trading financeiro — todos exigem troca rápida e confiável de dados entre componentes. O ZeroMQ resolve esse problema "de fábrica": ele gerencia toda a complexidade das conexões de rede, buffer, tentativas de reenvio e fragmentação de mensagens. O desenvolvedor só precisa escolher o padrão de troca adequado e chamar algumas funções.

Principais vantagens do ZeroMQ: velocidade impressionante (a biblioteca é escrita em C++ e usa algoritmos eficientes), consumo mínimo de memória, suporte a várias linguagens (incluindo C++, Python, Java, C#, Go e outras), além de suporte nativo a criptografia (via extensão CurveZMQ) e dispositivos proxy.

2. Instalação

Para C++, não existe um gerenciador de pacotes único como o pip do Python. No entanto, o ZeroMQ pode ser instalado de várias formas:

Método 1: Gerenciador de pacotes do sistema (Linux/macOS)

# Ubuntu/Debian
sudo apt-get install libzmq3-dev

# Fedora/RHEL
sudo dnf install zeromq-devel

# macOS (Homebrew)
brew install zeromq

Método 2: Compilação a partir do código-fonte

Baixe a versão mais recente do GitHub e compile:

git clone https://github.com/zeromq/libzmq.git
cd libzmq
mkdir build && cd build
cmake ..
make -j4
sudo make install

Método 3: vcpkg (Windows/Linux/macOS)

vcpkg install zeromq

Após a instalação, lembre-se de incluir o arquivo de cabeçalho zmq.hpp (wrapper C++) e fazer a linkagem com a biblioteca libzmq (ou zmq.lib no Windows).

3. Início rápido — exemplo mínimo funcional

O exemplo mais simples é um par "servidor-cliente" usando o padrão REQ/REP. O cliente envia "Hello", o servidor responde "World".

Servidor (server.cpp)

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

int main() {
    // Cria um contexto (um por processo)
    zmq::context_t context(1);

    // Cria um socket do tipo REP (respondedor)
    zmq::socket_t socket(context, zmq::socket_type::rep);
    socket.bind("tcp://*:5555");

    while (true) {
        zmq::message_t request;
        // Aguarda requisição do cliente
        socket.recv(request, zmq::recv_flags::none);
        std::string msg(static_cast<char*>(request.data()), request.size());
        std::cout << "Recebido: " << msg << std::endl;

        // Envia resposta
        zmq::message_t reply(5);
        memcpy(reply.data(), "World", 5);
        socket.send(reply, zmq::send_flags::none);
    }
    return 0;
}

Cliente (client.cpp)

#include <zmq.hpp>
#include                    

Recommendations