С какими брокерами сообщений вы работали?

«С какими брокерами сообщений вы работали?» — вопрос из категории Брокеры сообщений, который задают на 22% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Имею практический опыт работы с RabbitMQ, Apache Kafka и ActiveMQ.

RabbitMQ

Использовал для задач, требующих гарантированной доставки и сложной маршрутизации.

  • Протокол: AMQP.
  • Ключевые возможности: Очереди, обменники (exchanges), dead letter queues, RPC.
  • Пример публикации сообщения:
    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    try (Connection connection = factory.newConnection();
     Channel channel = connection.createChannel()) {
    channel.queueDeclare("my_queue", false, false, false, null);
    channel.basicPublish("", "my_queue", null, "Hello World".getBytes());
    }

Apache Kafka

Применял для потоковой обработки данных и построения event-driven архитектуры.

  • Модель: Публикация/подписка на топики (topics) с высокой пропускной способностью.
  • Пример отправки сообщения:
    
    Properties props = new Properties();
    props.put("bootstrap.servers", "localhost:9092");
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

try (Producer<String, String> producer = new KafkaProducer<>(props)) { producer.send(new ProducerRecord<>("my_topic", "message_key", "message_value")); }



### **ActiveMQ**
Работал в legacy-системах, использующих стандарт **JMS**.
*   **Особенности:** Поддержка протоколов STOMP и MQTT.

Также знаком с облачными сервисами **AWS SQS** (очереди) и **SNS** (уведомления), но имел с ними меньше практики.