Sobes.tech
Junior — Middle

Fale-nos sobre a sua experiência com o sistema de filas RabbitMQ

sobes.tech IA

Resposta da IA

Na minha experiência com RabbitMQ, utilizei este sistema de filas para organizar a troca assíncrona de mensagens entre microserviços. Por exemplo, num projeto, um serviço publicava tarefas na fila, e outro as consumia e processava. Isto permitia aliviar a carga dos processos principais e aumentar a resistência a falhas.

Trabalhei com conceitos como:

  • exchange (troca) para roteamento de mensagens,
  • queue (fila) para armazenamento de mensagens,
  • binding (vinculação) para conectar a troca e a fila.

Utilizei diferentes tipos de trocas: direct, topic, fanout, para gerir o roteamento de forma flexível. Para a conexão, usei o cliente Java RabbitMQ (amqp-client). Também configurei confirmações de mensagens (ack) para entrega fiável.

Exemplo de um consumidor simples em Java:

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection connection = factory.newConnection();
     Channel channel = connection.createChannel()) {
    channel.queueDeclare("task_queue", true, false, false, null);
    DeliverCallback deliverCallback = (consumerTag, delivery) -> {
        String message = new String(delivery.getBody(), "UTF-8");
        System.out.println("Received: " + message);
        channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
    };
    channel.basicConsume("task_queue", false, deliverCallback, consumerTag -> {});
}