Часто управление интеграцией двух или более систем оказывается сложной задачей. Эта задача становится еще более сложной в распределенной системе, ориентированной на микросервисы. В этом посте я объясню, как сделать это общение менее безболезненным. Введите Apache Kafka feat. Apache Camel.
Настройка верблюжьих маршрутов
Чтобы настроить Provider, мы определяем входной маршрут Camel от direct:kafkaRoute
, обмениваясь сообщением на конечную точку URI для Kafka.
Наконец, мы настраиваем Consumer из URI потребителя Kafka в java Bean, который вызывается при возникновении события.
Анатомия верблюжьего URI Кафки
"kafka:localhost:9092?topic=test&groupId=testing&autoOffsetReset=earliest&consumersCount=1"
- topic: Тема, на которую подписан Потребитель / Производитель.
- groupId: идентификатор группы, которой назначен Потребитель / Производитель.
- autoOffsetReset: схема для настройки начала сообщения.
- consumerCount: количество потребителей, подключающихся к серверу Kafka.
Для получения дополнительной информации о Camel URI см. Документы Kafka и Документы Camel Kafka.
Боб
Мы используем этот класс для настройки того, что происходит, когда мы получаем сообщение. Сначала мы пытаемся демаршалировать строку в объект Notification
, где мы затем можем ее использовать (в нашем случае мы делаем простые toString () и stdout).
Контроллер
Мы автоматически подключаемся к следующим объектам Bean: CamelContext
, 2 RouteBuilder
s, aProducerTemplate
и a ConsumerTemplate
.
Самым важным здесь является ProducerTemplate
, мы добавляем аннотацию@EndpointInject(uri = "direct:kafkaRoute")
, чтобы использовать верблюжий маршрут, который мы настроили в классе KafkaCamelRoute.java
.
Маршруты контроллера
GET /message
этот маршрут мы используем, чтобы показать, как мы можем отправить сообщение, используя автоматический ProducerTemplate
.
POST /message
этот маршрут мы используем для публикации JSON, упорядочивания его в строку и отправки в виде сообщения.
Выводы
Коммуникация и интеграция в распределенные системы не должны быть сложными, скорее, Apache предоставляет отличные инструменты, такие как Apache Kafka и Apache Camel, чтобы сделать точки интеграции менее безболезненными, а распределенные сообщения - более увлекательными.