この例では、Novell exteNd Messaging PlatformメッセージBeanを使用して、メッセージコンシューマを簡単に作成する方法を示します。 MessageBeanクラスはJMQMessageBeanを拡張しますが、該当するコンストラクタを呼び出して、onMessage
メソッドを実装する必要があります。接続ファクトリ、接続、セッションおよびコンシューマオブジェクトは、すべてJMQMessageBean
スーパークラスのBeanプロパティとして使用できます。
MessageBean
クラスのソースコードは、次のとおりです。package bean; import javax.naming.InitialContext; import javax.jms.Queue; import javax.jms.Message; import javax.jms.TextMessage; import javax.jms.JMSException; import javax.jms.QueueConnectionFactory; import com.sssw.jms.api.JMQMessageBean; public class MessageBean extends JMQMessageBean { public static void main(String[] args) throws Exception { | // get the initial context | InitialContext ctx = new InitialContext(); | | // lookup the queue connection factory | QueueConnectionFactory factory = (QueueConnectionFactory) ctx. | lookup("queue/connectionFactory"); | | // lookup the queue object | Queue queue = (Queue) ctx.lookup("queue/queue0"); | | // create bean and enter dispatch wait loop | MessageBean bean = new MessageBean(factory, queue); | | System.out.println("bean ready to process messages ..."); | | bean.run(); } /** Simply calling the super class constructor connects this consumer. @param factory the queue connection factory @param queue the queue object */ public MessageBean(QueueConnectionFactory factory, Queue queue) throws JMSException { | super(factory, queue); } /** This method is called asynchronously by JMS when a message arrives at the queue. @param message A JMS message. */ public void onMessage(Message message) { | TextMessage msg = (TextMessage) message; | try { | | System.out.println("received: " + msg.getText()); | } catch (JMSException ex) { | | ex.printStackTrace(); | } } }MessageBean
クラスは、接続ファクトリとキューオブジェクトでスーパークラスのコンストラクタを呼び出します。スーパークラスは、必要な接続、セッション、およびキュー受信者オブジェクトを作成し、このクラスをメッセージリスナとして設定します。そのため、MessageBean
クラスは、onMessage
メソッドを実装する必要があります。run
メソッドは、簡単に使用して、呼び出し側スレッドを停止できます。
Copyright © 2000-2003, Novell, Inc.All rights reserved. |