Ответ
Брокер сообщений (Message Broker) и Шина данных/сервисов (ESB — Enterprise Service Bus) — это разные паттерны интеграции.
| Критерий | Брокер сообщений (RabbitMQ, Apache Kafka) | Шина данных (Apache Camel, MuleSoft) |
|---|---|---|
| Основная цель | Асинхронная доставка сообщений между приложениями. | Интеграция разнородных систем через единую точку входа. |
| Фокус | Надежная передача, буферизация, гарантии доставки. | Маршрутизация, трансформация данных, оркестрация сервисов. |
| Архитектура | Децентрализованная (точка-точка или Pub/Sub). | Централизованная (все подключения через шину). |
| Связь | Часто однонаправленная (producer → consumer). | Двунаправленная, поддерживает сложные workflow. |
Пример с брокером (Kafka):
// Producer отправляет сообщение в топик
ProducerRecord<String, String> record = new ProducerRecord<>("orders", "order123", "{...}");
kafkaProducer.send(record);
// Consumer подписывается на топик и обрабатывает сообщения
consumer.subscribe(List.of("orders"));
ConsumerRecords<String, String> records = consumer.poll(Duration.ofSeconds(1));
for (ConsumerRecord<String, String> r : records) {
processOrder(r.value()); // Асинхронная обработка
}
Пример с шиной (Apache Camel):
// Маршрут в Camel: чтение из FTP, трансформация XML в JSON, запись в REST API
from("ftp://server/orders?delay=5000")
.unmarshal().jaxb("com.example")
.process(exchange -> { // Трансформация данных
Order order = exchange.getIn().getBody(Order.class);
exchange.getMessage().setBody(toJson(order));
})
.to("http://inventory-service/api/update"); // Интеграция с другим сервисом
Вывод: Брокер — это "почтовая служба" для сообщений. Шина — это "контрольный центр", который управляет тем, как, куда и в каком формате данные передаются между системами.