为Grails 3.0.4配置Camel路由

时间:2015-08-11 16:32:35

标签: grails routing apache-camel

我正在使用grails 3.0.4并且install-plugin不再工作了。我在gradle依赖项中添加了路由插件,但我可以使用grails create-route命令,如在线示例中所示。我已经在grails-app / routes中创建了自己的路由类,但是当我运行grails时,似乎根本没有使用该路由。是否有我需要做的额外配置,比如在某处创建一个bean?

我的课程如下:

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')
    }
}

2 个答案:

答案 0 :(得分:2)

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

  1. 在依赖项下的build.gradle中,根据您要使用的组件添加以下依赖项,如下所示。

    运行时" 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"         runtime" org.apache.activemq:activemq-camel:5.11.1"         runtime" 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上下文。如果需要,可以在resources.groovy中使用SpringBeans
  3. CamelContext camelContext = new DefaultCamelContext(registry) camelContext.addComponent(" ActiveMQ的",ActiveMQComponent.activeMQComponent("故障切换:TCP://本地主机:61616&#34)) camelContext.addRoutes new TrackingMessageRoute() camelContext.start()

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

答案 1 :(得分:1)

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