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 jakarta.jms.Connection;
import jakarta.jms.ConnectionFactory;
import jakarta.jms.DeliveryMode;
import jakarta.jms.Destination;
import jakarta.jms.ExceptionListener;
import jakarta.jms.JMSException;
import jakarta.jms.Message;
import jakarta.jms.MessageProducer;
import jakarta.jms.Session;
import jakarta.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();
ConnectionFactory factory = (ConnectionFactory) context.lookup("myFactoryLookup");
Destination destination = (Destination) context.lookup("myDestinationLookup");
Connection connection = factory.createConnection("<username>", "<password>");
connection.setExceptionListener(new MyExceptionListener());
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(destination);
TextMessage message = session.createTextMessage("Message Text!");
messageProducer.send(message, DeliveryMode.NON_PERSISTENT,
Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE);
connection.close();
} 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 を開くことは効率的ではありません。