Oracle® Fusion Middleware Oracle WebLogic Server Microsoft .NET対応のWebLogic JMSクライアントの使用 11gリリース1 (10.3.6) B55555-07 |
|
![]() 前 |
![]() 次 |
この章では、JMS .NET APIを使用してC#で基本的なJMSアプリケーションを開発するために必要な手順について説明します。WebLogic JMS .NETクライアントを使用するJMSアプリケーションの開発プロセスは、Javaクライアントの開発プロセスとよく似ています。
以下のフローチャートは、基本的なJMS .NETアプリケーションの手順を示したものです。
注意: リソースの作成やクローズは、メッセージの送信や受信と比べると、比較的オーバーヘッドが高くなります。スレッド間でコンテキストを共有し、他のリソースは再利用のためにキャッシュすることをお薦めします。詳細は、「ベスト・プラクティス」を参照してください。 |
以下の例では、C#で記述する基本的なJMS .NETクライアント・アプリケーションの作成方法を示します。自動確認応答モードを使用するように構成されたキューにおいて、同期受信を使用します。この例の完全なコピーは、付録A「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";
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; |
構成されたJNDI名を使用して、コンテキストでJMS宛先リソースをルックアップします。
IQueue queue = (IQueue)context.LookupDestination(this.queueName);
接続ファクトリを使用して接続を作成します。.NETクライアント・ホストからJMS接続ホストへのJMS接続が確立されます。接続ホストは、接続ファクトリで構成されているターゲット・リスト内のいずれかのサーバーです。.NETクライアント・ホストと同じでもかまいません。
IConnection connection = cf.CreateConnection();
コンシューマがメッセージを取得できるように接続を開始します。
connection.Start();
AUTO_ACKNOWLEDGE
確認応答モードを使用してセッションを作成します。
注意: セッションはスレッド・セーフではありません。プロデューサとコンシューマを同時に実行する必要がある場合は、複数のセッションを使用します。複数のセッションを使用する例については、付録A「JMS .NETクライアント・サンプル・アプリケーション」の非同期サンプルを参照してください。 |
ISession session = connection.CreateSession( Constants.SessionMode.AUTO_ACKNOWLEDGE);
メッセージ・プロデューサを作成して、永続メッセージを送信します。
IMessageProducer producer = session.CreateProducer(queue); producer.DeliveryMode = Constants.DeliveryMode.PERSISTENT; ITextMessage sendMessage = session.CreateTextMessage("My q message"); producer.Send(sendMessage);
メッセージ・コンシューマを作成して、メッセージを受信します。手順6
で示したように、セッションがAUTO_ACKNOWLEDGEモードで作成されたため、メッセージはサーバーから自動的に削除されます。
IMessageConsumer consumer = session.CreateConsumer(queue); IMessage recvMessage = consumer.Receive(500);
付録A「JMS .NETクライアント・サンプル・アプリケーション」では、C#で記述されたJMS .NETクライアント・アプリケーションの完全な例を紹介し、以下の高度な概念の一部が例示されています。
確認応答モードのかわりにローカル・トランザクションを使用。
メッセージの永続性。詳細は、『Oracle WebLogic Server JMSのプログラミング』の永続メッセージと非永続メッセージに関する項を参照してください。
確認応答モード。詳細は、『Oracle WebLogic Server JMSのプログラミング』の非トランザクション・セッションに関する項を参照してください。
例外リスナー。詳細は、「ベスト・プラクティス」を参照してください。
恒久サブスクリプション。詳細は、『Oracle WebLogic Server JMSのプログラミング』の恒久サブスクリプションの設定に関する項を参照してください。
相互運用性、セキュリティ、ベスト・プラクティスなど、JMS .NETクライアントのその他の高度な概念を使用する際のガイドラインについては、第4章「プログラミングの考慮事項」を参照してください。