在groovy中不调用onMessage的MessageListener类

时间:2014-07-29 20:16:12

标签: groovy jms

这是我的消费者代码。在这里,我试图连续收听队列,并且消息来了,我尝试将回复发送到另一个队列。但是当我使用setMessageListener时,我的on Message代码没有被调用。

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)
             }
          }
       }
    }
}

如果有人有解决方案,请告诉我。

1 个答案:

答案 0 :(得分:0)

我修复了这个问题,我导入了错误的库。我不得不使用JMS Listerner库import javax.jms.MessageListener而不是Groovy Message Listener。

此外,我必须传递实现侦听器的类的obkject: cons.setMessageListener(new JMSListener());这是有效的。它调用onMessage