作为关于ActiveMQ的新手,我只是尝试从Grails连接到队列。我看了一下JMS插件,ActiveMQ插件和“Grails权威指南”一书。
这本书告诉我,我只需要丢弃一些罐子,连接一些豆子,就是这样:
jmsFactory(org.apache.activemq.pool.PooledConnectionFactory) { bean ->
bean.destroyMethod = "stop"
connectionFactory = { org.apache.activemq.ActiveMQConnectionFactory cf ->
brokerURL = "tcp://localhost:61616"
}
}
jmsTemplate(org.springframework.jms.core.JmsTemplate) {
connectionFactory = jmsFactory
}
jmsMessageListener(org.springframework.jms.listener.adapter.MessageListenerAdapter, ref("messageService")) {
defaultListenerMethod = "onMessage"
}
jmsContainer(org.springframework.jms.listener.DefaultMessageListenerContainer) {
connectionFactory = jmsFactory
destinationName = "demoQueue"
messageListener = jmsMessageListener
transactionManager = ref("transactionManager")
autoStartup = false
}
我测试了它,它看起来像一个魅力。甚至交易都有效。
那么我需要使用其中一个插件吗?我想念一下吗?
答案 0 :(得分:3)
如果您愿意自己集成插件,则无需使用该插件。
我使用jms插件并手动配置ActiveMQ。
您可以在 BuildConfig.groovy 中自动包含JMS插件和ActiveMQ jar:
repositories {
...
mavenCentral()
...
}
plugins {
...
runtime ":jms:1.2"
...
}
dependencies {
...
compile "org.apache.activemq:activemq-core:5.5.1"
...
}
在 spring / resources.groovy 中配置ActiveMQ嵌入式代理:
beans = {
...
jmsConnectionFactory(SingleConnectionFactory) {
targetConnectionFactory = { ActiveMQConnectionFactory cf ->
brokerURL = "vm://localhost"
}
}
...
}
我想我不需要嵌入式代理,因为我使用外部代理。
要使用外部经纪人,只需更改 spring / resources.groovy 中定义的brokerURL。
JMS-Plugin怎么样?使用它有哪些好处?
JMS插件提供有用的Grails集成。有关详细信息,请参阅Grails JMS Plugin 1.2 Reference。