如何实现异步JMS应用程序?是否有必要更改服务器程序或只是我应该更改客户端代码? 我想知道如何将同步JMS消息传递更改为异步?
答案 0 :(得分:2)
很简单。您需要为消费者分配消息监听器以异步接收消息。
consumer.setMessageListener(new MessageListener).
谷歌搜索将为您提供大量样本。
答案 1 :(得分:1)
Java EE中的消息驱动Bean是异步的。自然地。简单的MDB可能如下所示:
@MessageDriven(mappedName = "jms/MyQueue") // JNDI name for a specific Destination (queue or topic)
public class MyMDB implements MessageListener{
public void onMessage(Message msg){
// handle it async.
}
}
否则,在普通的java / JMS中,它几乎一样简单,相同的代码,但不是@MessageDriven注释,而是必须完成一些初始化代码才能启动并运行JMS使用者。当然,标准JMS设置过程也必须完成,例如获取连接工厂,创建连接和查找目的地。
public class MyConsumer implements MessageListener{
public void init(Connection conn, Destination dest){
// connection and destination from JNDI, or some other method.
Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer cons = sess.createConsumer(dest);
cons.setMessageListener(this);
conn.start();
}
@Override
public void onMessage(Message msg) {
// Do whatever with message
}
}