大家好,我这些天一直在学习JMS,我看到JMS的消息接收方式有两种,一种是consumer.receive(),另一种是实现一个MessageListener接口。我在这儿用的queue的消息模式,一开始我尝试的是consumer.receive()方式接收消息,没有问题,只是如果没有消息过来的话它会一直等待下去,于是我决定尝试第二种方式,据说它会在消息一到达的时候调用onMessage()方法而无需等待。
问题就出在这儿,我的做法是用一个类ConsumerUtil实现了MessageListener接口,然后在onMessage(Message message)方法中实现业务细节。但是我运行程序时根本收不到发出去的消息(连接什么的都是正确的,因为消息已经被发送出去),请大家帮我这个菜鸟分析一下,我的代码大致如下,谢谢!....../* create connection */
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(connectionURL);
conn = factory.createConnection();
conn.start();/* create session and destination */
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);MessageProducer producer = session.createProducer(destination);
Message message = session.createTextMessage("Hello, world!");
producer.send(message);ConsumerUtil consumer = new ConsumerUtil();
session.setMessageListener(consumer);......
问题就出在这儿,我的做法是用一个类ConsumerUtil实现了MessageListener接口,然后在onMessage(Message message)方法中实现业务细节。但是我运行程序时根本收不到发出去的消息(连接什么的都是正确的,因为消息已经被发送出去),请大家帮我这个菜鸟分析一下,我的代码大致如下,谢谢!....../* create connection */
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(connectionURL);
conn = factory.createConnection();
conn.start();/* create session and destination */
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);MessageProducer producer = session.createProducer(destination);
Message message = session.createTextMessage("Hello, world!");
producer.send(message);ConsumerUtil consumer = new ConsumerUtil();
session.setMessageListener(consumer);......
consumer = session.createConsumer(Queue)
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage tm = (TextMessage) message;
try {
system.out.println("Received message: " + tm.getText());
delegateHandle.AddLog(Thread.currentThread().getName()+" "+tm.getText());
}
catch (JMSException e) {
e.printStackTrace();
}
});
+1LZ的
ConsumerUtil consumer = new ConsumerUtil();
session.setMessageListener(consumer);
这部分的实现,仿照1L的改一改。