Oracle® Fusion Middleware Oracle WebLogic Server Microsoft .NET 対応の WebLogic JMS クライアントの使用 11g リリース 1 (10.3.1) B55555-01 |
|
戻る |
次へ |
WebLogic JMS .NET クライアントを使用する JMS アプリケーションの開発プロセスは、Java クライアントの開発プロセスとよく似ています。以下の節では、JMS .NET API を使用して C# の基本的な JMS アプリケーションを開発するために必要な手順について説明します。
以下のフローチャートは、基本的な 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 Fusion Middleware Oracle WebLogic Server JMS プログラマーズ ガイド』の「永続メッセージと非永続メッセージ」を参照してください。
確認応答モード。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMS プログラマーズ ガイド』の「非トランザクション セッション」を参照してください。
例外リスナ。詳細については、「ベスト プラクティス」を参照してください。
恒久サブスクリプション。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JMS プログラマーズ ガイド』の「恒久サブスクリプションの設定」を参照してください。
相互運用性、セキュリティ、ベスト プラクティスなど、JMS .NET クライアントのその他の高度な概念を使用する際のガイドラインについては、「プログラミングの考慮事項」を参照してください。