异步JMS消息传递

时间:2012-07-23 06:07:01

标签: asynchronous jms

如何实现异步JMS应用程序?是否有必要更改服务器程序或只是我应该更改客户端代码? 我想知道如何将同步JMS消息传递更改为异步?

2 个答案:

答案 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

   }
}