Вопрос

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

Поэтому я искал некоторую справочную информацию, чем Camel отличается от Spring Integration, но, похоже, информации там довольно мало, я нашел:

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

Это было полезно?

Решение

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

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

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

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

Другие советы

Я рекомендую только интеграцию Spring, если у вас уже есть пружинный проект, и вы просто добавили некоторую «базовую» интеграцию, используя файл, FTP, JMS, JDBC и так далее.

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

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

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

Если вам нужно больше деталей, вы можете прочитать мой опыт в моем блоге: Избалованные для выбора: какая структура интеграции используется - весенняя интеграция, мул ESB или Apache верблюда?

Я недавно провел верблюду VS Spring Integration с целью интеграции Apache Kafka.. Отказ Несмотря на то, что я свидетельствует о приеме весеннего застройщика, я к сожалению, нашел свое подозрение с постоянно растущим стеком проекта весной подтвержденным: Весна потрясающая как контейнер IOC-Contaner, чтобы служить клей для других рамках, но он не подходит для предоставления жизнеспособных альтернатив к Те рамки. Отказ Там могут быть исключения для этого, а именно все, что связано с MVC, где произошла весна, и где она делает отличную работу, но другие попытки предоставить новые функции на вершине контейнеров. три причины и то Si Kafka использует случай Подтверждает все они:

  • Введение давно зарубленного трудно использовать DSL для XML-конфигурации.
  • Страницы кода CHML-Configuration, чтобы получить все компоненты Framework.
  • Отсутствующие ресурсы для обеспечения функциональности наравне с выделенными каркасами.

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

С Si наоборот, документация для интеграции KAFKA довольно интенсивно И все же не может четко объяснить, как интегрировать кафка. Интеграция кафки прессованный в Si-Way на то, чтобы делать вещи, которые добавляют дополнительную сложность. Другая документация, например, на StackoverFlow также менее обильно и менее полезна, чем для верблюда.

Мой вывод: Cobbler Stick в вашу профессию - используйте весну в качестве контейнера и верблюда в качестве системной интеграции.

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

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

--disclaimer: Я пружинный интеграционный коммиттер

Большинство сравнений верблюда и SI, которые я видел, не принимайте во внимание:

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

2.) Эффект пружины XD имел при создании приложений для воспитания пружины, доступных без компиляции кода - также пружинные источники XD и раковины просто пружины.

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

4.) Эффект в ближайшее время выпущенная весенняя интеграция 4.0 Java DSL https://github.com/spring-projects/spring-integration-extensions/wiki/spring-integration-java-dsl-reference

Для вашего рассмотрения,

/ Питер (Отказ от ответственности я работаю в ключевом)

Мы используем Spring Integration для нашего приложения и теперь учитывая перейти к верблюде Apache, поскольку мы столкнулись с множеством вопросов с Fronge Integration Framework. Вот пара вопросов.

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

  2. Весна не предоставляет материалы для параметров QoS. Даже если вы включите QoS, режим доставки и истечения срока действия / сроки срока действия будут потеряны (я собираюсь поднять проблему JIRA для этого). Apache Camel обрабатывает эту и QoS Параметры, отправляются в Apdleam Applications и не бросают его.

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

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

http://forum.springsource.org/forumdisplay.php?42-istegration
https://jira.springsource.org/browse/int.

Ура Олега

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

Apache Camel — очень хорошая и очень полная платформа.Но если ваше приложение использует Spring, мой личный совет — использовать Spring Integration.

Spring Integration — это интеграционная система рассмотрения жалоб EIP экосистемы Spring-Source.Имеет отличную интеграцию с экосистемой:Spring boot, Batch, XD;даже ядро ​​использует ту же абстракцию, начиная с Spring Framework 4.Некоторые абстракции обмена сообщениями были перенесены в структуру в качестве доказательства того, что базовая абстракция обмена сообщениями Spring Integration очень сильна.Теперь среда Spring, например, использует абстракцию обмена сообщениями для Spring Web, поддержку веб-сокетов.

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

Одной из причин использования верблюда над пружинной интеграцией является, когда вам нужен более привлекательный набор EIP. Весенняя интеграция не обеспечивает абстракцию над такими вещами, как Threadpool.

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

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

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

Верблюд действует как промежуточное ПО для применения, где можно выполнить моделирование данных, преобразование значений сообщений и хореографию сообщений.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top