6.2. メッセージの送信
この例では、最初に JNDI Context
を作成し、これを使用して ConnectionFactory
および Destination
を検索し、ファクトリーを使用して Connection
を作成および起動し、Session
を作成します。次に、MessageProducer
が Destination
に作成され、それを使用してメッセージが送信されます。その後、Connection
が閉じられ、プログラムは終了します。
この Sender
の例の実行可能なバリアントは、<source-dir>/qpid-jms-examples
ディレクトリーと、以前 3章はじめに で説明した Hello World の例にあります。
例: メッセージの送信
package org.jboss.amq.example; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.ExceptionListener; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import javax.naming.Context; import javax.naming.InitialContext; public class Sender { public static void main(String[] args) throws Exception { try { Context context = new InitialContext(); 1 ConnectionFactory factory = (ConnectionFactory) context.lookup("myFactoryLookup"); Destination destination = (Destination) context.lookup("myDestinationLookup"); 2 Connection connection = factory.createConnection("<username>", "<password>"); connection.setExceptionListener(new MyExceptionListener()); connection.start(); 3 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 4 MessageProducer messageProducer = session.createProducer(destination); 5 TextMessage message = session.createTextMessage("Message Text!"); 6 messageProducer.send(message, DeliveryMode.NON_PERSISTENT, Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE); 7 connection.close(); 8 } catch (Exception exp) { System.out.println("Caught exception, exiting."); exp.printStackTrace(System.out); System.exit(1); } } private static class MyExceptionListener implements ExceptionListener { @Override public void onException(JMSException exception) { System.out.println("Connection ExceptionListener fired, exiting."); exception.printStackTrace(System.out); System.exit(1); } } }
- 1
- JNDI
Context
を作成し、ConnectionFactory
およびDestination
オブジェクトを検索します。設定は、前述 のjndi.properties
ファイルから選択されます。 - 2
- ConnectionFactory および Destination オブジェクトは、ルックアップ名を使用して JNDI コンテキストから取得されます。
- 3
- ファクトリーは
Connection
の作成に使用され、次にExceptionListener
が登録されて開始します。接続の作成時に指定される認証情報は、通常適切な外部設定ソースから取得され、アプリケーション自体とは別のままとなり、個別に更新できます。 - 4
- トランザクション以外の自動承認
Session
がConnection
に作成されます。 - 5
MessageProducer
は、メッセージをDestination
に送信するために作成されます。- 6
TextMessage
は、指定の内容で作成されます。- 7
TextMessage
が送信されます。非永続的な送信は、デフォルトの優先度で、有効期限はありません。- 8
Connection
は閉じられます。Session
およびMessageProducer
は暗黙的に閉じられます。
これは単なる例であることに注意してください。実際のアプリケーションは、通常有効期限の長い MessageProducer を使用し、時間の経過とともに多数のメッセージを送信します。通常、メッセージごとに Connection
、Session
、および MessageProducer
を開くことは効率的ではありません。