我正在使用grails jms-1.3
插件,我遇到問題,我的jms偵聽器Service在應用程序完全啓動並運行之前開始使用activeMQ中的消息。當我嘗試向DB寫入一些消息時,這會導致錯誤。 所以我的問題是,我如何設法開始手動從隊列中消費。這樣我可以將autoStartup設置爲false。grails jms在完成啓動後開始監聽
這裏是我的例子代碼的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
或手動控制器中調用。但不幸的是,這種啓動方法在TargetConnectionFactory中不存在。
有沒有辦法做到這一點,或任何其他建議?
BootStrap.groovy中(沒有工作)
class BootStrap {
def jmsConnectionFactory
def init = { servletContext ->
jmsConnectionFactory.??WHATEVER??.start()
}
def destroy = {
}
}
這似乎是固定在最新的快照(請參見:https://github.com/gpc/jms/commit/dee0630d0073d9611da3d0a0efbf8b8b33565ccd)嘗試使用':JMS:1.3 SNAPSHOT' –
您的權利,感謝這個提示。 – physi