为 Grails 3.0.4 配置 Camel 路由

Configuring Camel Routing for Grails 3.0.4

我正在使用 grails 3.0.4,安装插件不再工作。我在 gradle 依赖项中添加了路由插件,但我可以像在线示例中那样使用命令 grails create-route。我在 grails-app/routes 中创建了自己的路线 class 但是当我 运行 grails 似乎根本不使用该路线。是否有我必须做的额外配置,比如在某处创建一个 bean?

我的class如下:

import org.apache.camel.builder.RouteBuilder

class TrackingMessageRoute extends RouteBuilder {
    def grailsApplication

    @Override
    void configure() {
        def config = grailsApplication?.config
        from('seda:input.queue').to('stream:out')
             from('mina2:tcp://localhost:553').to('stream:out')
    }
}

Grails 3 的路由插件尚未更新。 有关几个重要插件的 Grails 3 就绪状态,请参阅 https://github.com/grails/grails-core/wiki/Grails-3-Priority-Upgrade-Plugins

由于 Grails 3 与 Spring 引导密切相关,因此直接使用 Camel 库应该相对容易(无需插件)。有关可能有用的信息,请参阅 http://camel.apache.org/spring-boot.html

路由插件确实没有为 grails 3 更新,但正如@jstell 所建议的那样,使用 camel 库实际上很容易。这就是我实施解决方案的方式:

  1. 在build.gradle下的dependencies下面根据你要使用的组件添加如下依赖

    运行时"org.apache.camel:camel-core:2.15.3" 运行时间 "org.apache.camel:camel-groovy:2.15.3" 运行时间 "org.apache.camel:camel-stream:2.15.3" //运行时"org.apache.camel:camel-netty:2.15.3" 运行时间 "org.apache.camel:camel-netty4:2.15.3" 运行时间 "org.apache.camel:camel-spring:2.15.3" 运行时间 "org.apache.camel:camel-jms:2.15.3" 运行时间 "org.apache.activemq:activemq-camel:5.11.1" 运行时间 "org.apache.activemq:activemq-pool:5.11.1"

  2. 创建一个扩展 RouteBuilder 的路由,如下所示:

    class TrackingMessageRoute extends RouteBuilder {
        def grailsApplication
    
        @Override
        void configure() {
            def config = grailsApplication?.config
            //from('netty4:tcp://192.168.254.3:553?sync=true&decoders=#decoders&encoder=#encoder').to('activemq:queue:Mimacs.Tracking.Queue')
            from('netty4:tcp://192.168.254.3:553?serverInitializerFactory=#sif&keepAlive=true&sync=true&allowDefaultCodec=false').to('activemq:queue:Mimacs.Tracking.Queue')
            from('activemq:queue:Mimacs.Tracking.Queue').bean(MimacsMessageListener.class)
        }
    }
    
    1. 在 BootStrap.groovy 中配置 Camel 上下文。如果需要
    2. ,可以在resources.groovy中使用SpringBeans

CamelContext camelContext = new DefaultCamelContext(注册表) camelContext.addComponent("activemq",ActiveMQComponent.activeMQComponent("failover:tcp://localhost:61616")) camelContext.addRoutes 新的 TrackingMessageRoute() camelContext.start()

注意。我遗漏了不影响此答案的某些代码部分。如果你有这些,那么你就可以开始了。