Microsoft .NET 対応の WebLogic JMS クライアントの使用

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

WebLogic JMS .NET API を使用した基本的な JMS アプリケーションの開発

WebLogic JMS .NET クライアントを使用する JMS アプリケーションの開発プロセスは、Java クライアントの開発プロセスとよく似ています。以下の節では、JMS .NET API を使用して C# の基本的な JMS アプリケーションを開発するために必要な手順について説明します。

 


JMS .NET クライアント アプリケーションの作成

以下のフローチャートは、基本的な JMS .NET アプリケーションの手順を示したものです。

図 3-1 JMS .NET クライアント アプリケーションの基本的な手順

JMS .NET クライアント アプリケーションの基本的な手順

注意 : リソースの作成やクローズは、メッセージの送信や受信と比べると、比較的オーバーヘッドが高くなります。スレッド間でコンテキストを共有し、他のリソースは再利用のためにキャッシュすることをお勧めします。詳細については、「ベスト プラクティス」を参照してください。

 


例 : 基本的な PTP JMS .NET クライアント アプリケーションの記述

以下の例では、C# で記述する基本的な JMS .NET クライアント アプリケーションの作成方法を示します。自動確認応答モードを使用するようにコンフィグレーションされたキューにおいて、同期受信を使用します。この例の完全なコピーは「JMS .NET クライアント サンプル アプリケーション」に記載されています。

このサンプルで使用されている .NET API のクラスとメソッドの詳細については、「WebLogic JMS .NET API について」または .NET クライアントの WebLogic メッセージング API リファレンスを参照してください。

前提条件

先に進む前に、WebLogic Server のコンフィグレーションを担当するシステム管理者は、以下のものをコンフィグレーションしておく必要があります。

基本的な手順

以下の手順では、プログラムの最初で必要な変数 (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;

手順 2

JMS 接続ファクトリをルックアップします。

IConnectionFactory cf = context.LookupConnectionFactory(this.cfName);

手順 3

コンフィグレーションされた JNDI 名を使用して、コンテキストで JMS 送り先リソースをルックアップします。

IQueue queue = (IQueue)context.LookupDestination(this.queueName);

手順 4

接続ファクトリを使用して接続を作成します。.NET クライアント ホストから JMS 接続ホストへの JMS 接続が確立されます。接続ホストは、接続ファクトリでコンフィグレーションされている対象リスト内のいずれかのサーバです。.NET クライアント ホストと同じでもかまいません。

IConnection connection = cf.CreateConnection();

手順 5

コンシューマがメッセージを取得できるように接続を開始します。
connection.Start();

手順 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);

手順 9

接続を閉じます。接続を閉じると、その子セッション、コンシューマ、およびプロデューサも閉じられます。

connection.Close();      

手順 10

コンテキストを閉じます。

context.CloseAll();
注意 : context.Close() では、すべての IConnection が閉じられるまで、ネットワーク接続を終了しません。
context.CloseAll() では、ネットワーク接続と、開いているすべての IConnection を閉じます。

 


JMS .NET クライアント アプリケーションでの高度な概念の使用

JMS .NET クライアント サンプル アプリケーションでは、C# で記述された JMS .NET クライアント アプリケーションの完全な例を紹介し、以下の高度な概念の一部が例示されています。

相互運用性、セキュリティ、ベスト プラクティスなど、JMS .NET クライアントのその他の高度な概念を使用する際のガイドラインについては、「プログラミングの考慮事項」を参照してください。


  ページの先頭       前  次