Когда использовать интеграцию весны против верблюда?



как опытный пользователь Spring я предполагал, что интеграция Spring будет иметь наибольший смысл в недавнем проекте, требующем некоторых возможностей обмена сообщениями (JMS) (подробнее). После нескольких дней работы с Spring Integration он по-прежнему чувствует себя как много накладных расходов конфигурации, учитывая количество каналов, которые вы должны настроить, чтобы принести некоторые запросы-ответы (прослушивание на разных очередях JMS) связи на месте.

поэтому я искал какой-то фон информация о том, как верблюд отличается от весенней интеграции, но похоже, что информация там довольно запасная, я нашел:

вопрос: какой опыт вы сделали при использовании одного стека над другим? В каких сценариях вы бы порекомендовали Camel, если бы Весенняя интеграция не поддерживалась? Где вы видите плюсы и минусы каждого? Любые советы от реальных проектов высоко ценятся.

10   117  

10 ответов:

мы выбираем Camel над Spring-интеграцией, потому что fluent API действительно хорош. Мы фактически используем его в весенних проектах и используем Spring для настройки его части. API программирования понятны, и есть большой набор разумных компонентов.

мы сделали небольшую перестрелку и в основном в то время для нашего требования верблюд выиграл. Мы используем его в основном для передачи внутренних файлов данных / от внешних сторон, которые обычно требуют преобразования формата отправки его с помощью ftp/sftp/... или прикрепить его к электронной почте и отправить его.

мы обнаружили, что цикл редактирования-компиляции-отладки уменьшен. С помощью groovy для экспериментов по настройке маршрутов добавляются бонусы.

Spring-Integration-отличный продукт, и я совершенно уверен, что он также удовлетворит наши потребности.

Я рекомендую только весеннюю интеграцию, если у вас уже есть проект Spring, и вам нужно просто добавить некоторую "базовую" интеграцию с помощью File, FTP, JMS, JDBC и так далее.

Apache Camel имеет два основных преимущества:

  1. многие, многие другие технологии поддерживаются.
  2. кроме того, (хороший) XML DSL, есть свободные API для Java, Groovy и Scala.

потому что Apache Camel имеет очень хорошую интеграцию с Spring, я бы даже использовал это вместо того, если весенняя интеграция в большинстве весенних проектов.

Если вам нужно больше деталей, вы можете прочитать мой опыт в моем блоге:Spoilt для выбора: какие рамки интеграции использовать – Spring Integration, Mule ESB или Apache Camel?

недавно я провел верблюд против весенней интеграции перестрелки с целью интеграции Апач Кафка. Несмотря на то, что я был заядлым разработчиком Spring, я с грустью обнаружил, что мое подозрение с постоянно растущим стеком проектов Spring подтверждено: весна является удивительным, как МОК-контейнер, чтобы служить в качестве клея для других рамок, но он не в состоянии обеспечить жизнеспособные альтернативы до эти рамки. Могут быть исключения из этого, а именно все, что связано с MVC, где Весна пришла из и где она делает большую работу, но другие попытки обеспечить новую функциональность на вершине функции контейнера не хватает для три причины и SI Kafka use case подтверждает все из них:

  • введение многословного сложного в использовании DSL для XML-конфигурации.
  • страницы xml-кода конфигурации для подключения всех компонентов фреймворка.
  • отсутствуют ресурсы для обеспечения функциональности по номиналу с выделенными рамками.

теперь вернемся к результатам моей перестрелки: самое главное, что я впечатлен общей концепцией верблюдов маршруты между конечными точками. Кафка легко интегрируется с этой концепцией, и трех линий конфигурации достаточно, чтобы все было запущено. Проблемы, возникающие в ходе процесса, аккуратно устраняются обширная документация от проектной группы а также много вопросов по Stackoverflow. Последний но не в последнюю очередь, есть комплексная интеграция в Spring которые удовлетворят все ваши пожелания.

с SI наоборот, документация для интеграции Кафки довольно интенсивным и до сих пор не может ясно объяснить, как интегрировать Кафку. Интеграция Кафки-это прижал в SI-способ делать вещи, что добавляет дополнительную сложность. Другая документация, например, на Stackoverflow также менее обильна и менее полезна, чем для верблюда.

мой вывод: cobbler придерживайтесь своей торговли - используйте Spring в качестве контейнера и Camel в качестве каркаса системной интеграции.

Я действительно зависит от того, что вы хотите сделать. Если вам нужно расширить что-то, чтобы построить свое собственное решение для обмена сообщениями, Spring Integration имеет лучшую модель программирования. Если вам нужно что-то, что поддерживает многие протоколы без пользовательского кода, Camel опережает интеграцию Spring.

имея небольшой масштаб перестрелки является очень хорошей идеей, просто убедитесь, что вы пытаетесь сделать тип вещей, которые вы обычно делаете в проекте.

--отказ от ответственности: я Весна Интеграционный коммиттер

большинство сравнений Camel и SI, которые я видел, не учитывают следующее:

1.) Эффект, который Spring Boot оказал на производительность разработчика для интеграции Spring

2.) Влияние весны XD имело На делать применения внедрения весны доступными без компиляции кода-также источники и раковины весны XD просто переходники канала внедрения весны, когда вы ищете расширить весну XD.

3.) Влияние весны XD не имел о внесении объединяющей интеграцию Spring, весенний замес, Весна данных (+Hadoop с!) в одном стеке, эффективно обеспечивая пакетную и потоковую обработку, поддержку HDFS / Apache Hadoop и многое другое для интеграции Spring.

4.) Влияние скоро-к-быть-выпущенной интеграции весны 4.0 Java DSL https://github.com/spring-projects/spring-integration-extensions/wiki/Spring-Integration-Java-DSL-Reference

для рассмотрения

/Питер (отказ от ответственности я работаю в Pivotal)

на самом деле, я бы сказал, что FTP закончил свой инкубационный период. Вы можете сделать простой поиск на форумах SI/JIRA, чтобы увидеть, какие новые функции были реализованы и ошибки, которые были исправлены. Из различных разговоров кажется, что из него уже есть некоторое использование производства, поэтому я бы предложил дать ему второй взгляд и, конечно же, сообщить нам о своих проблемах через

http://forum.springsource.org/forumdisplay.php?42-Integration
https://jira.springsource.org/browse/INT

Ура Олег

отказ от ответственности: я весенний интеграционный коммиттер

мы используем Spring Integration для нашего приложения и теперь рассматриваем возможность перехода на Apache Camel, поскольку мы столкнулись с множеством проблем с Spring Integration framework. Вот несколько вопросов.

  1. CachingConnectionFactory, который предоставляет Spring, открывает 1000 бездействующих соединений в IBM MQ, и нет никакой гарантии, что эти соединения используются повторно. И все же эти соединения останутся открытыми навсегда, что создает проблемы на стороне MQ. Пришлось перезапустить приложение каждую неделю в более низких средах просто для обновления соединений. Apache Camel также обеспечивает кэширование, и соединения, похоже, идут вверх/вниз в зависимости от нагрузки.

  2. Spring не предоставляет картографы для параметров QoS. Даже если вы включите QoS, режим доставки и свойства expiration/timetolive будут потеряны (я собираюсь поднять проблему JIRA для этого). Apache Camel обрабатывает это, и параметры QoS отправляются в вышестоящие приложения и не отбрасываются оно.

Я сейчас работаю над проблемами с обработкой исключений и транзакций с Apache Camel, которые Spring, казалось, лучше справлялись с AOP.

Apache Camel-очень хорошая структура и очень полная, но если ваше приложение использует spring, мой личный совет-вернуться к интеграции spring. Весенняя интеграция-это интеграционная структура жалоб EIP экосистемы Spring-Source. Он имеет очень хорошую интеграцию с экосистемой: Spring boot, Batch, XD, даже ядро использует ту же абстракцию, начиная с Spring Framework 4 некоторые абстракции обмена сообщениями были перемещены в рамках в качестве доказательства того, что основные сообщения абстракция интеграции Spring очень сильна, теперь Spring framework, например, использует Messaging abstractio для Spring Web, поддержку веб-сокетов. Еще одна хорошая вещь в приложении Spring с Spring integration в отношении использования Apache Camel заключается в том, что с Spring integration вы можете использовать только одно приложение Contecxt. Помните, что контекст верблюда-это весенний контекст. если у вас есть возможность использовать новую версию Spring, я могу предложить использовать Spring Integration java dsl для конфигурации. Я использую это на моих новых проектах и я чувствую себя более читаемым и понятным.

Я надеюсь, что этот рефлектин может помочь вам для ваших оценок

одна из причин использования интеграции Camel over Spring - это когда вам нужен более функциональный набор EIP. Весенняя интеграция не предоставляет абстракций над такими вещами, как ThreadPool.

Camel предоставляет дополнительные конструкции для этого, упрощая некоторые аспекты работы с параллельным кодом:

http://camel.apache.org/camel-23-threadpool-configuration.html

Если у вас нет потребности в такого рода вещи, и просто хочу общения файл, JMS, конечные точки FTP и т. д... тогда просто используйте весеннюю интеграцию.

Если ваше текущее приложение находится в Spring и требует функций, которые поддерживаются Spring Integration of EIP, то Spring Integration-лучший вариант, иначе требуется больше сторонних поддержки / протоколов / форматов файлов и т. д.

Comments

    No results found.