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 -> {});
}