我需要ActiveMQ的插件吗?

时间:2012-06-21 18:01:03

标签: grails activemq

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

我测试了它,它看起来像一个魅力。甚至交易都有效。

那么我需要使用其中一个插件吗?我想念一下吗?

1 个答案:

答案 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