1

作为一个关于 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
}    

我对它进行了测试,它似乎很有魅力。甚至交易也有效。

那么我需要使用其中一个插件吗?我错过了什么吗?

4

1 回答 1

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 插件怎么样。使用它有哪些好处?

JMS 插件提供了有用的 Grails 集成。有关详细信息,请参阅Grails JMS 插件 1.2 参考

于 2012-06-21T18:50:09.187 回答