Sobes.tech
Назад к вопросам
Junior — Middle
68

Расскажите о вашем опыте работы с системой очередей RabbitMQ

Компании, где спрашивали
ИннотехИннотех

Ответ от нейросети

sobes.tech AI

В моём опыте работы с RabbitMQ я использовал эту систему очередей для организации асинхронного обмена сообщениями между микросервисами. Например, в одном проекте сервис публиковал задачи в очередь, а другой сервис их потреблял и обрабатывал. Это позволяло разгрузить основные процессы и повысить отказоустойчивость.

Работал с такими понятиями, как:

  • exchange (обменник) для маршрутизации сообщений,
  • queue (очередь) для хранения сообщений,
  • binding (привязка) для связи обменника и очереди.

Использовал различные типы обменников: direct, topic, fanout, чтобы гибко управлять маршрутизацией. Для подключения применял Java-клиент RabbitMQ (amqp-client). Также настраивал подтверждения сообщений (ack) для надежной доставки.

Пример простого потребителя на 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 -> {});
}