gpt4 book ai didi

grails - 应用程序完全启动后,grails jms开始监听

转载 作者:行者123 更新时间:2023-12-02 15:05:16 24 4
gpt4 key购买 nike

我正在使用grails jms-1.3插件,但是我的问题是,我的jms侦听器服务在应用程序完全启动并运行之前开始使用来自activeMQ的消息。当我尝试将一些消息写入数据库时​​,这将导致错误。
所以我的问题是,我该如何设法手动开始从队列中消费。这样我可以将autoStartup设置为false。

这是我的示例grails代码:

ConsumerService.groovy

package jmsstartstop

import grails.plugin.jms.Queue

class ConsumerService {
static exposes = ["jms"]
@Queue(name="liesMich")
def receiveMessage(String msg) {
log.info("Received Message:" + msg)
}
}

resources.groovy
import org.apache.activemq.ActiveMQConnectionFactory
import org.springframework.jms.connection.SingleConnectionFactory

beans = {
jmsConnectionFactory(SingleConnectionFactory) {
targetConnectionFactory = { ActiveMQConnectionFactory cf ->
brokerURL = grailsApplication.config.jms.brokerURL
}
}
}

Config.groovy
jms{
brokerURL='tcp://localhost:61616'
containers {
standard {
autoStartup = false
}
}
}

我正在寻找的是 jmsConnectionFactory.getTargetConnectionFactory().start()之类的东西,可以在 Bootstrap.groovy中调用,也可以在 Controller 中手动调用。但是很遗憾,此启动方法在TargetConnectionFactory中不存在。

有办法做到吗,或有其他建议吗?

Bootstrap.groovy (不起作用)
class BootStrap {
def jmsConnectionFactory

def init = { servletContext ->
jmsConnectionFactory.??WHATEVER??.start()

}
def destroy = {
}
}

最佳答案

问题是该插件在Datasource插件(Grails的一部分)完成自己的启动之前就开始处理消息。

好消息是,该插件的最新SNAPSHOT版本中的appears to be fixed

要使用SNAPSHOT,请更改您的插件,如下所示::jms:1.3-SNAPSHOT中的BuildConfig.groovy

关于grails - 应用程序完全启动后,grails jms开始监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33899981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com