Ответ
Имею практический опыт работы с 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** (уведомления), но имел с ними меньше практики.