Grails 我需要ActiveMQ的插件吗?

Grails 我需要ActiveMQ的插件吗?,grails,activemq,Grails,Activemq,作为ActiveMQ的新手,我只是尝试从Grails连接到队列。我看了一下JMS插件、ActiveMQ插件和《Grails权威指南》一书 这本书告诉我,我只需要放下一些罐子,装上一些豆子,就这样: jmsFactory(org.apache.activemq.pool.PooledConnectionFactory) { bean -> bean.destroyMethod = "stop" connectionFactory = { org.apache.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
}    
我测试了一下,它看起来很有魅力。即使是交易也能起作用


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

不,如果你愿意自己集成插件,就不需要使用插件

我使用jms插件并手动配置ActiveMQ

您可以在BuildConfig.groovy中自动包含JMS插件和ActiveMQ jar:

repositories {
    ...
    mavenCentral()
    ...
}
plugins {
    ...
    runtime ":jms:1.2"
    ...
}
dependencies {
    ...
    compile "org.apache.activemq:activemq-core:5.5.1"
    ...
}
beans = {
    ...
    jmsConnectionFactory(SingleConnectionFactory) {
        targetConnectionFactory = { ActiveMQConnectionFactory cf ->
            brokerURL = "vm://localhost"
        }
    }
    ...
}
并在spring/resources.groovy中配置ActiveMQ嵌入式代理:

repositories {
    ...
    mavenCentral()
    ...
}
plugins {
    ...
    runtime ":jms:1.2"
    ...
}
dependencies {
    ...
    compile "org.apache.activemq:activemq-core:5.5.1"
    ...
}
beans = {
    ...
    jmsConnectionFactory(SingleConnectionFactory) {
        targetConnectionFactory = { ActiveMQConnectionFactory cf ->
            brokerURL = "vm://localhost"
        }
    }
    ...
}

我想我不需要嵌入式代理,因为我使用的是外部代理

要使用外部代理,只需更改spring/resources.groovy中定义的代理URL


那么JMS插件呢。使用它有哪些好处


JMS插件提供了有用的Grails集成。有关更多信息,请参阅。

hm。我想我不需要嵌入式代理,因为我使用的是外部代理。那么JMS插件呢。使用它有哪些好处?@Ralf请查看我的答案的更新以了解您的其他问题。您知道如何配置嵌入式ActiveMQ代理吗?您是否尝试通过jdbc将消息持久化到mysql或任何其他数据库?我在坚持邮件方面有问题。如果您可以共享resource.groovy文件,以及如何添加持久性,那就太好了。队列管理器可以确保消息的传递。所以在坚持方面没有什么可做的。在Grails应用程序中,只接收消息,然后您可以通过普通的域类持久化它们。但我记得,您处于一个事务上下文中。也许那是你的问题。为什么不发布一个新问题?