3 WebLogic JMS .NET APIを使用した基本的なJMSアプリケーションの開発
この章の内容は次のとおりです。
JMS .NETクライアント・アプリケーションの作成
以下のフローチャートは、基本的なJMS .NETアプリケーションのステップを示したものです。
ノート:
リソースの作成やクローズは、メッセージの送信や受信と比べると、比較的オーバーヘッドが高くなります。スレッド間でコンテキストを共有し、他のリソースは再利用のためにキャッシュすることをお薦めします。詳細は、「ベスト・プラクティス」を参照してください。
例:基本的なPTP JMS .NETクライアント・アプリケーションの記述
以下の例では、C#で記述する基本的なJMS .NETクライアント・アプリケーションの作成方法を示します。自動確認応答モードを使用するように構成されたキューにおいて、同期受信を使用します。この例の完全なコピーは、「JMS .NETクライアント・サンプル・アプリケーション」に記載されています。
このサンプルで使用されている.NET APIのクラスとメソッドの詳細は、WebLogic JMS .NET APIの理解または.NETクライアント用のWebLogicメッセージングAPIリファレンスのドキュメントを参照してください。
前提条件
先に進む前に、WebLogic Serverの構成を担当するシステム管理者は、以下のものを構成しておく必要があります。
-
JMS .NETクライアントをホストするサーバー上で、T3プロトコル用に構成されたリスニング・ポート。詳細は、「リスニング・ポートの構成」を参照してください
-
必要なJMSリソース(接続ファクトリ、JMSサーバー、宛先など)。詳細は、「JMS .NETクライアント用のJMSリソースの構成」を参照してください
基本的なステップ
以下のステップでは、プログラムの最初で必要な変数(WebLogic Serverホスト、接続ファクトリ、キューおよびトピック名など)を定義済みであることを前提としています。
using System; using System.Collections; using System.Collections.Generic; using System.Threading; using WebLogic.Messaging; public class MessagingSample { private string host = "localhost"; private int port = 7001; private string cfName = "weblogic.jms.ConnectionFactory"; private string queueName = "jms.queue.TestQueue1";
ステップ1
WebLogic Serverホストへのネットワーク接続を確立して、必要な場合はログインするために、コンテキストを作成します。
IDictionary<string, Object> paramMap = new Dictionary<string, Object>(); paramMap[Constants.Context.PROVIDER_URL] = "t3://" + this.host + ":" + this.port; IContext context = ContextFactory.CreateContext(paramMap);
ノート:
Provider_URLには、カンマで区切って複数のアドレスを格納できます。複数のアドレスの指定の詳細は、「URLフォーマットの指定」を参照してください
複数のアドレスを指定した場合、コンテキストは、いずれかのアドレスが成功するか、すべてのアドレスが失敗するまで、各アドレスを順に試行します。アドレスのリスト内のランダムな位置から開始し、すべてのアドレスをローテーションします。様々なクライアント・コンテキストが様々な.NETクライアント・ホスト・サーバーにネットワーク接続をランダムにロード・バランシングするので、ランダムな位置から開始すると、複数のクライアントのロード・バランシングが容易になります。
ノート:
初期コンテキストで次のようにユーザー名とパスワードを指定することもできます。
paramMap[Constants.Context.SECURITY_PRINCIPAL] = username; paramMap[Constants.Context.SECURITY_CREDENTIALS] = password;
ステップ3
構成されたJNDI名を使用して、コンテキストでJMS宛先リソースをルックアップします。
IQueue queue = (IQueue)context.LookupDestination(this.queueName);
ステップ4
接続ファクトリを使用して接続を作成します。.NETクライアント・ホストからJMS接続ホストへのJMS接続が確立されます。接続ホストは、接続ファクトリで構成されているターゲット・リスト内のいずれかのサーバーです。.NETクライアント・ホストと同じでもかまいません。
IConnection connection = cf.CreateConnection();
ステップ6
AUTO_ACKNOWLEDGE
確認応答モードを使用してセッションを作成します。
ノート:
セッションはスレッド・セーフではありません。プロデューサとコンシューマを同時に実行する必要がある場合は、複数のセッションを使用します。複数のセッションを使用する例については、「JMS .NETクライアント・サンプル・アプリケーション」の非同期サンプルを参照してください。
ISession session = connection.CreateSession( Constants.SessionMode.AUTO_ACKNOWLEDGE);
ステップ7
メッセージ・プロデューサを作成して、永続メッセージを送信します。
IMessageProducer producer = session.CreateProducer(queue); producer.DeliveryMode = Constants.DeliveryMode.PERSISTENT; ITextMessage sendMessage = session.CreateTextMessage("My q message"); producer.Send(sendMessage);
ステップ8
メッセージ・コンシューマを作成して、メッセージを受信します。ステップ6
で示したように、セッションがAUTO_ACKNOWLEDGEモードで作成されたため、メッセージはサーバーから自動的に削除されます。
IMessageConsumer consumer = session.CreateConsumer(queue); IMessage recvMessage = consumer.Receive(500);
JMS .NETクライアント・アプリケーションでの高度な概念の使用
「JMS .NETクライアント・サンプル・アプリケーション」では、C#で記述されたJMS .NETクライアント・アプリケーションの完全な例を紹介し、次の高度な概念の一部が例示されています。
-
確認応答モードのかわりにローカル・トランザクションを使用。
-
メッセージの永続性。詳細は、『Oracle WebLogic Server JMSアプリケーションの開発』の永続メッセージと非永続メッセージに関する項を参照してください。
-
確認応答モード。詳細は、『Oracle WebLogic Server JMSアプリケーションの開発』の非トランザクション・セッションに関する項を参照してください。
-
例外リスナー。詳細は、「ベスト・プラクティス」を参照してください
-
恒久サブスクリプション。詳細は、『Oracle WebLogic Server JMSアプリケーションの開発』の恒久サブスクリプションの設定に関する項を参照してください。
相互運用性、セキュリティ、ベスト・プラクティスなど、JMS .NETクライアントのその他の高度な概念を使用する際のガイドラインについては、「プログラミングの考慮事項」を参照してください。