为Grails3.0.4配置驼峰路由

为Grails3.0.4配置驼峰路由,grails,routing,apache-camel,Grails,Routing,Apache Camel,我使用的是Grails3.0.4,安装插件不再工作。我在gradle dependencies中添加了路由插件,但我可以像在线示例中一样使用命令grails create route。我在grails app/routes中创建了自己的route类,但当我运行grails时,似乎根本没有使用该路由。我需要做额外的配置吗?比如在某个地方创建一个bean 我的班级如下: import org.apache.camel.builder.RouteBuilder class TrackingMessa

我使用的是Grails3.0.4,安装插件不再工作。我在gradle dependencies中添加了路由插件,但我可以像在线示例中一样使用命令grails create route。我在grails app/routes中创建了自己的route类,但当我运行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')
    }
}
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)
    }
}

Grails3的路由插件尚未更新。 有关几个重要插件的Grails3就绪状态,请参见


由于Grails3与SpringBoot密切相关,因此直接使用Camel库应该相对容易(不需要插件)。请参阅以获取潜在的有用信息。

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

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

    运行时“org.apache.camel:camel核心:2.15.3” 运行时“org.apache.camel:camel groovy:2.15.3” 运行时“org.apache.camel:camel流: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池:5.11.1”

  • 创建扩展RouteBuilder的管线,如下所示:

    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')
        }
    }
    
    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)
        }
    }
    
  • 在BootStrap.groovy中配置Camel上下文。如果需要,可以在resources.groovy中使用SpringBeans
  • CamelContext CamelContext=新的默认CamelContext(注册表) camelContext.addComponent(“activemq”),ActiveMQComponent.ActiveMQComponent(“故障转移:tcp://localhost:61616")) camelContext.addRoutes新跟踪消息路由() camelContext.start()

    注意。我遗漏了代码中不影响这个答案的某些部分。如果你有这些,你就可以走了