2

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

4

2 回答 2

2

很简单。您需要为您的消费者分配一个消息侦听器以异步接收消息。

consumer.setMessageListener(new MessageListener).

谷歌搜索会给你一些样本。

于 2012-07-23T08:31:03.510 回答
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

   }
}
于 2012-07-24T21:52:45.657 回答