Код здесь.

Часто управление интеграцией двух или более систем оказывается сложной задачей. Эта задача становится еще более сложной в распределенной системе, ориентированной на микросервисы. В этом посте я объясню, как сделать это общение менее безболезненным. Введите 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 RouteBuilders, aProducerTemplate и a ConsumerTemplate.

Самым важным здесь является ProducerTemplate, мы добавляем аннотацию@EndpointInject(uri = "direct:kafkaRoute"), чтобы использовать верблюжий маршрут, который мы настроили в классе KafkaCamelRoute.java.

Маршруты контроллера

GET /message этот маршрут мы используем, чтобы показать, как мы можем отправить сообщение, используя автоматический ProducerTemplate.

POST /message этот маршрут мы используем для публикации JSON, упорядочивания его в строку и отправки в виде сообщения.

Выводы

Коммуникация и интеграция в распределенные системы не должны быть сложными, скорее, Apache предоставляет отличные инструменты, такие как Apache Kafka и Apache Camel, чтобы сделать точки интеграции менее безболезненными, а распределенные сообщения - более увлекательными.