Junior — Middle
Tell us about your experience working with the RabbitMQ queue system
sobes.tech AI
Answer from AI
In my experience with RabbitMQ, I used this queue system to organize asynchronous message exchange between microservices. For example, in one project, a service published tasks to a queue, and another service consumed and processed them. This allowed to offload main processes and increase fault tolerance.
I worked with concepts such as:
- exchange for message routing,
- queue for storing messages,
- binding to connect exchanges and queues.
I used different types of exchanges: direct, topic, fanout, to flexibly manage routing. For connection, I used the Java client RabbitMQ (amqp-client). I also configured message acknowledgments (ack) for reliable delivery.
Here's an example of a simple consumer in 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 -> {});
}