为 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 库实际上很容易。这就是我实施解决方案的方式:
在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"
创建一个扩展 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)
}
}
- 在 BootStrap.groovy 中配置 Camel 上下文。如果需要
,可以在resources.groovy中使用SpringBeans
CamelContext camelContext = new DefaultCamelContext(注册表)
camelContext.addComponent("activemq",ActiveMQComponent.activeMQComponent("failover:tcp://localhost:61616"))
camelContext.addRoutes 新的 TrackingMessageRoute()
camelContext.start()
注意。我遗漏了不影响此答案的某些代码部分。如果你有这些,那么你就可以开始了。
我正在使用 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 库实际上很容易。这就是我实施解决方案的方式:
在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"
创建一个扩展 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) } }
- 在 BootStrap.groovy 中配置 Camel 上下文。如果需要 ,可以在resources.groovy中使用SpringBeans
CamelContext camelContext = new DefaultCamelContext(注册表) camelContext.addComponent("activemq",ActiveMQComponent.activeMQComponent("failover:tcp://localhost:61616")) camelContext.addRoutes 新的 TrackingMessageRoute() camelContext.start()
注意。我遗漏了不影响此答案的某些代码部分。如果你有这些,那么你就可以开始了。