首页 文章

Camelize一个 Spring 季启动应用程序

提问于
浏览
4

我们有一个 spring 启动应用程序,由于集成需求而变得越来越复杂 - 比如在你执行此操作后发送电子邮件,或者在你之后播放jms消息等 . 在寻找更高级别的抽象时,我遇到了apache camel(避风港)从来没有使用骆驼) . 我的问题是我如何处理 spring 启动应用程序?该应用程序具有标准 spring 控制器,服务并使用 spring 数据连接到数据库 . 我没有在网上找到有关如何将camel合并到spring-boot restful应用程序中的帮助 . 这甚至是可行的东西还是骆驼是一个完全不同的野兽, Spring 季靴子不适合?

我确实读过Camel与Spring紧密集成,但我仍然不知道是否1)Spring Controllers仍然可以与Camel一起使用2)如果我可以从camel路由调用其他spring bean以及我是否可以调用从 Spring beans 调用骆驼路线(对不起,如果这些听起来像骆驼新手问题给专家)

作为我们必须做的事情的一个例子:

  • 在完成向订单数据库写入任何订单后,我们必须向订单处理部门发送电子邮件

  • 如果有人删除了特定的用户地址,我们必须发送到jms主题,以便其他应用程序可以采取措施 .

每个http请求今天都通过Spring MVC堆栈进入 .

在特定任务完成后,有没有办法将处理“切换”到骆驼? (比如通过Spring MVC堆栈成功地将订单写入数据库,然后交给camel发送jms消息并做其他事情)?或者我们应该用Camel完全取代Spring?

不确定正确的道路是什么 . 有人可以指导我们吗?

3 回答

  • 3

    这个问题略显陈旧,但是虽然值得一提的是Apache Camel现在包含一个Spring Boot组件 .

    详细信息可以在这里找到
    http://camel.apache.org/spring-boot.html
    他们在这里记录了一个例子
    http://camel.apache.org/spring-boot-example.html

    按照这个目前的最佳做法来骆驼 spring 靴应用!

  • 0

    一种选择是
    1>在Spring DSL或Java DSL或其他方法中定义camel路由,并在Spring Application上下文中定义它 .
    2>并且有一个实现ApplicationContextAware的类并将Spring ApplicationContext缓存在静态变量中 .
    3>对于@Controller,我们可以得到这个静态变量并获得ApplicationContext .
    4>使用camel上下文ID,我们可以从ApplicationContext执行getBean .
    5>这是DefaultCamelContext的实例,我们可以使用它来创建一个createProducer并从@Controller调用camel路由 .

  • 0

    像其他人提到的那样,spring-boot-camel(但使用spring-boot-camel-starter作为你的依赖)效果非常好,而且设置起来非常简单 . 当您使用@Component注释RouteBuilder扩展和您的处理器实现时,它们会直接连接到上下文中,您很高兴 . 然后,您可以@Autowire CamelContext或ProducerTemplate到您的类中并根据需要使用它们 .

    你问过控制器如何使用Camel,如果你@Autowire你需要的任何东西(可能是上下文或 生产环境 者模板),那么答案肯定是“肯定”,你可以很容易地将它们结合使用 . 当您使用spring-web时,您的上下文将启动并保持运行,无需任何其他配置等 .

    就像马修威尔斯建议的那样,链接会让你指向正确的方向 . 如果您或您团队中的其他人完全熟悉Camel,那么您将很容易做您需要做的事情 . 但是,啊,我注意到这个问题是从2014年开始的,你可能已经超出了你的问题 . 至少如果其他人停止了这个线程,他们将有大量的信息来开始 . 如果您过来并重新访问您的问题,请告诉我们您的具体情况以及最终的结果 . 干杯!

相关问题