Java 何时使用Spring集成与Camel?

Java 何时使用Spring集成与Camel?,java,jms,messaging,apache-camel,spring-integration,Java,Jms,Messaging,Apache Camel,Spring Integration,作为一个经验丰富的Spring用户,我认为Spring集成在最近一个需要一些(JMS)消息传递功能()的项目中最有意义。在使用Spring Integration几天后,考虑到需要配置大量通道以实现某些请求响应(在不同JMS队列上侦听)通信,您仍然感觉有很多配置开销 因此,我在寻找一些背景信息,了解Camel与Spring Integration的不同之处,但我发现,这些信息似乎非常多余: (从2009年12月开始,在Spring integration中实现真实世界的集成场景与Camel之间

作为一个经验丰富的Spring用户,我认为Spring集成在最近一个需要一些(JMS)消息传递功能()的项目中最有意义。在使用Spring Integration几天后,考虑到需要配置大量通道以实现某些请求响应(在不同JMS队列上侦听)通信,您仍然感觉有很多配置开销

因此,我在寻找一些背景信息,了解Camel与Spring Integration的不同之处,但我发现,这些信息似乎非常多余:

  • (从2009年12月开始,在Spring integration中实现真实世界的集成场景与Camel之间进行了非常中性的比较)
  • (Camel与其他解决方案的比较,2009年10月)
  • (马特·雷布尔,2008年10月)

问题是:在使用一个堆栈而不是另一个堆栈时,您有哪些经验?如果Spring集成缺乏支持,您会推荐哪些场景?你在哪里看到每种方法的优点和缺点?非常感谢来自实际项目的任何建议。

我们选择Camel而不是Spring集成,因为fluent API非常好。我们实际上在Spring项目中使用它,并使用Spring配置它的一部分。编程API是清晰的,并且有一大组合理的组件

我们进行了一次小规模的枪战,基本上在当时我们的要求是骆驼赢了。我们主要使用它向外部方传输内部数据文件,或从外部方传输内部数据文件,这通常需要格式转换,并使用ftp/sftp/发送。。。或者将其附加到电子邮件并发送出去

我们发现编辑编译调试周期缩短了。使用groovy实验设置路由是额外的奖励


Spring集成也是一个伟大的产品,我非常确信它也能满足我们的需求

这取决于你想做什么。如果您需要扩展一些东西来构建自己的消息传递解决方案,Spring Integration有更好的编程模型。如果您需要支持许多协议而不需要自定义代码的东西,Camel将领先于Spring集成

进行小规模的交火是一个非常好的主意,只要确保你正在尝试做你通常在项目中会做的事情


--免责声明:我是一名Spring集成提交人

事实上,我想说FTP已经脱离了它的潜伏期。您可以在SI论坛/JIRA上进行简单搜索,查看实现了哪些新功能以及修复了哪些bug。从各种聊天中,它似乎已经有了一些生产用途,所以我建议再看一看,当然,通过


干杯 奥列格


免责声明:我是Spring集成提交人

如果您已经有了一个Spring项目,并且只需要使用文件、FTP、JMS、JDBC等添加一些“基本”集成,我只推荐Spring集成

Apache Camel有两个主要优势:

  • 支持的技术越来越多
  • 此外,作为一个(好的)XMLDSL,还有针对Java、Groovy和Scala的流畅API
  • 因为ApacheCamel与Spring有很好的集成,我甚至会在大多数Spring项目中使用它而不是Spring集成


    如果您需要更多详细信息,可以在我的博客文章中阅读我的经验:

    使用Camel over Spring集成的一个原因是当您需要更具功能的EIP集时。SpringIntegration不提供对ThreadPool之类事物的抽象

    Camel确实为此提供了额外的构造,简化了处理并发代码的某些方面:


    如果您不需要这种东西,只想连接文件、JMS、FTP端点等。。。然后只使用Spring集成。

    如果您当前的应用程序在Spring中,并且需要EIP的Spring集成支持的功能,那么Spring集成是最好的选择,否则需要更多的第三方支持/协议/文件格式等。

    我所看到的Camel和SI的大多数比较没有考虑以下内容账户:

    1.)Spring Boot对Spring集成开发人员生产力的影响

    2.)Spring XD的作用是使Spring集成应用程序无需代码编译即可使用——当您想要扩展Spring XD时,Spring XD源和接收器只是Spring集成通道适配器

    3.)Spring XD的作用是在一个堆栈中统一Spring集成、Spring批处理、Spring数据(+Hadoop!),有效地将批处理和流处理、HDFS/Apache Hadoop支持以及更多功能引入Spring集成

    4.)即将发布的SpringIntegration4.0JavaDSL的效果

    请考虑一下


    /Pieter(免责声明我在Pivotal工作)

    我最近进行了一次Camel vs Spring集成枪战,目的是集成。尽管我是一名狂热的Spring开发人员,但遗憾的是,我发现我对Spring不断增长的项目堆栈的怀疑得到了证实:Spring作为IOC容器非常棒,可以作为其他框架的粘合剂,但它无法为这些框架提供可行的替代方案。可能会有例外,即与MVC有关的一切,Spring从何而来,在何处发挥了巨大的作用,但其他在容器特性之上提供新功能的尝试由于以下三个原因而落空,SI Kafka用例确认了所有这些原因:

    • 为XML配置引入了冗长且难以使用的DSL
    • 用于连接所有框架组件的xml配置代码页
    • 缺少资源以提供与专用框架相同的功能。
    现在,回到我的拍摄结果:最重要的是,我对骆驼的路线的总体概念印象深刻