在groovy中未调用MessageListener类的onMessage
这是我的消费代码。在这里,我试图不断地聆听一个队列,当消息传来时,我试图向另一个队列发送回复。但在这里,当我设置MessageListener时,不会调用我的on Message代码在groovy中未调用MessageListener类的onMessage,groovy,jms,Groovy,Jms,这是我的消费代码。在这里,我试图不断地聆听一个队列,当消息传来时,我试图向另一个队列发送回复。但在这里,当我设置MessageListener时,不会调用我的on Message代码 import groovyjarjarantlr.debug.MessageEvent; import groovyjarjarantlr.debug.MessageListener; import groovyjarjarantlr.debug.TraceEvent; import groovyjarjarasm
import groovyjarjarantlr.debug.MessageEvent;
import groovyjarjarantlr.debug.MessageListener;
import groovyjarjarantlr.debug.TraceEvent;
import groovyjarjarasm.asm.Context
@Grab(group='net.sf.gtools.jms', module='JmsCategory', version='0.2')
@Grab(group='org.apache.activemq',module = 'activemq-all', version='5.9.0')
@Grab(group="junit", module="junit", version="4.11")
import javax.jms.Session
import javax.naming.InitialContext
import org.apache.activemq.ActiveMQConnectionFactory
import org.apache.ivy.util.Message;
def connFactory = new ActiveMQConnectionFactory("tcp://pass-dev01.unx.sas.com:61616")
def conn = connFactory.createConnection()
def sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE)
def dest = sess.createQueue("pass-dev00.async")
def cons = sess.createConsumer(dest)
javax.jms.MessageListener listener
conn.start()
cons.setMessageListener(listener);
conn.close()
public abstract class JMSMessageListener implements MessageListener {
public void onMessage(Message message) {
println("in onmessage")
def msg1 = cons.receive()
println(msg1)
// def sendMessage() {
Properties props = new Properties()
File propsFile = new File('C:/workspace-grails/gateListener/src/gateListener/pass.hypervisor.properties')
props.load(propsFile.newDataInputStream())
// println props.getProperty('pass.async.queue')
def queueName=props.getProperty('pass.send.queue')
println "sender"+queueName
use(JmsCategory) {
def jms = new ActiveMQConnectionFactory('tcp://pass-dev01.unx.sas.com:61616')
jms.connect { c ->
c.queue(queueName) { q ->
def msg = createTextMessage("test")
q.send(msg)
}
}
}
}
}
请告诉我是否有人对此有解决方案。我修复了此问题,导入了错误的库。我必须使用JMS Listener库导入javax.JMS.MessageListener,而不是Groovy Message Listener 我还必须将实现侦听器的类的对象传递为:
cons.setMessageListenernew JMSListener;这是有效的。它调用onMessage和。。。您从未实例化侦听器变量?我尝试使用此“cons.setMessageListenernew JMSMessageListener.onMessageG1.text;”。无论你尝试什么,它都不会调用消息。侦听器变量实际上是一个接口,我无法实例化它。侦听器行不应该是listener=new JMSMessageListener,而JMSMessageListener不是抽象的吗?您似乎正在设置空消息侦听器。我不是JMS专家,但我希望这会抛出一个NullPointer,我在前面尝试过将其用作:“cons.setMessageListenernew JMSMessageListener;”,它不起作用。它只是在那里等待,从不调用消息。