Apache Camel ESB для C# и Java EDA

Мы рассматриваем интеграцию некоторых наших крупных бизнес-сервисов с использованием Event-Driven Architecture (EDA), и серверная часть этих сервисов (REST) ​​реализована как в Java, так и в.NET (C#). Мы изначально думали об использовании RabbitMQ (и протокола AMQP) в качестве нейтрального и открытого средства (с хорошей поддержкой клиентов на этих двух языках), но это означало необходимость поддержки другой среды выполнения (Erlang) наряду с Java и CLR. Мы также рассматриваем Apache qPid, поскольку в нем реализована реализация протокола AMQP для брокера Java, что может устранить эту проблему.

У кого-нибудь есть опыт использования более богатого Apache Camel ESB поверх ActiveMQ для интеграции Java и.NET Services в режиме Pub-Sub EDA? Я пропустил любые другие возможные предложения относительно маршрута через это?

Спасибо

4 ответа

Если все, что вам нужно, это платформа обмена сообщениями для поддержки EDA, то Camel не является строго необходимым. Camel - это платформа для трансляции между различными форматами полезной нагрузки, маршрутизации между веб-сервисами, обменом сообщениями, RSS-каналами и около 160 другими.

Исходя из вашего вопроса выше, ActiveMQ должен быть в состоянии обработать сценарий использования, который вы описываете из коробки.

С точки зрения клиента ActiveMQ имеет поддержку библиотек как для Java (JMS - стандарт), так и для C++ / C# ( CMS / NMS - почти точная копия JMS). Другие языки (Ruby, Python, Javascript и т. Д.) Поддерживаются через (в значительной степени и стандартный) протокол STOMP.

Я работал с ActiveMQ в смешанной среде.Net/Java, и он делает именно то, что говорит на жестяной банке. Все в приятной среде исполнения Java, которую можно оснастить, используя ваши любимые инструменты мониторинга через JMX.

Я создал адаптер конечной точки Java для моего приложения.net. Приложение.net публикует сообщение xml или json на конечную точку верблюда, в моем случае это тема TibcoEMS. Вся маршрутизация / фильтрация / обогащение /... обрабатывается внутри верблюда. Обмен затем помещается в другую конечную точку для извлечения приложением Java.

Один из сценариев использования ESB, который действительно излучает Camel, - "Маршрутизация". Насколько я знаю, нет.NET-порта механизма верблюжьей маршрутизации. Таким образом, вы не сможете использовать возможности маршрутизации Camel на стороне.NET. Тем не менее, верблюд поддерживает различные форматы обмена, такие как json, xml и pojos. Вы должны быть в состоянии достичь взаимодействия между Java и.NET, используя либо xml, либо json в качестве формата обмена.

Должно работать отлично! ActiveMQ - это Java-приложение, но для него есть работающий клиентский API-интерфейс.NET. Это должно сделать большинство ваших потребностей паба / саба. Если вам нужно больше логики в середине, такой как маршрутизация, на самом деле ActiveMQ поставляется в комплекте с Camel, так что вы можете выполнять маршрутизацию, преобразования, преобразования и т. Д. Прямо в экземпляре ActiveMQ, конфигурируя некоторый XML (или код Java/Scala).

Нет необходимости обрабатывать Camel напрямую с.NET, так как в любом случае связь должна осуществляться через ActiveMQ. Комбинация ActiveMQ/Camel действительно мощная для такого рода задач - и она бесплатна.

Другие вопросы по тегам