最近のアクセス:
Queue データタイプ

Queue データタイプは、メッセージキューに接続し、キューにメッセージを送信したりキューからメッセージを受信したりするために使用します。したがって、非同期通信や非同期処理などのプログラミングの利点を活かし、接続されていない別のアプリケーションとの相互動作が必要なアプリケーションを開発するのに便利です。

説明

Queue データタイプを使用してメッセージキューに接続できます。いったん接続が確立されたら、メッセージを送受信できるようになります。送信されるメッセージは、テキストと優先度で構成される QueueMessage データタイプで定義します。詳しくは、「QueueMessage データタイプ」を参照してください。
Queue データタイプを使用して既存のキューに接続する方法は 2 とおりあります:
  • Point to point: メッセージがキューに送信され、その後、クライアントがメッセージを消費します (キューから削除されます)。これは、メッセージが送信されると、クライアントはキューに接続してメッセージを取り出せるということを意味します (消費されていない場合)。
  • Publish/Subscribe: メッセージはキューに送信され、キューに接続済みのクライアントのみがこのメッセージを受信できます。メッセージが送信されてからクライアントがキューに接続した場合、このクライアントはメッセージを受信しません。

プロパティ

Provider 使用するキューのプロバイダーです。jms.xml ファイルで定義します。
User プロバイダーで設定されているユーザーを上書きします。
Password プロバイダーで設定されているパスワードを上書きします。
Browse メッセージをキューで保持するか、削除するかを示します。
errCode  メソッドの実行時にエラーが発生した場合はエラーコードを示し、エラーが発生しなかった場合は 0 を返します。 
errDescription エラーが発生した場合、エラーの詳細を示します。

Provider
使用するキューのプロバイダーを示します。プロバイダーの名前は、jms.xml ファイルで定義しておく必要があります (下の「プロバイダーの定義」を参照してください)。このファイルは、アプリケーションディレクトリー (DATANNN) に配置しておく必要があります。
User
プロバイダーで設定されているユーザーを上書きします。
&queue.user = "myUser"
Password
プロバイダーで設定されているパスワードを上書きします。
&queue.password = "myPassword"
Browse
メッセージをキューで保持するか、削除するかを示します。
既定値は False です。
&queue.browse = True
errCode 
メソッドの実行時にエラーが発生した場合はエラーコードを示し、エラーが発生しなかった場合は 0 を返す読み取り専用のプロパティです。 
既定値は 0 です。
&errcode = &queue.errCode
errDescription
エラーが発生した場合、エラーの詳細を示す読み取り専用のプロパティです。
&errDsc = &queue.errDescription
 

メソッド

Connect プロバイダーで定義されたキューとの接続を確立します。
Disconnect キューとの接続を終了します。
Send キューにメッセージを送信します。
Commit コミットされていないメッセージすべてをコミットします。
Rollback コミットされていないメッセージをすべてロールバックします。
<Boolean> = Connect() 

プロバイダーで定義されたキューとの接続を確立します。接続可能であれば True を、接続できない場合は False を返します。

&Boolean = &queue.connect()

Disconnect

キューとの接続を終了します。

&queue.disconnect()

<String> = Send(QueueMessage message)

キューにメッセージを送信します。メッセージが問題なく送信された場合は、その ID を返します。送信できなかった場合は "" を返します。

&char = &queue.send(&queueMessage)

Commit

キューにコミットされていないメッセージすべてを送信します (Queue_AutoCommit を NO に設定した場合。詳しくは、下の「プロバイダーの定義」を参照してください)。

Rollback

キューに送信されていないメッセージをすべてロールバックします (Queue_AutoCommit を NO に設定した場合。詳しくは、下の「プロバイダーの定義」を参照してください)。
 

メッセージの処理

メッセージを処理するには、次のように For In コマンドを使用する必要があります:

For &message in &queue
 ...//&message とともに使用します
EndFor

プロバイダーの定義

Java でのプロバイダーの定義

プロバイダーを定義するには、アプリケーションディレクトリーに jms.xml ファイルを作成する必要があります。このファイルで、複数の異なるプロバイダーを定義することができます。次に jms.xml ファイル全文の例を示します。

<JMS_Providers>
 <Provider>
   <Name>queueProvider</Name>
   <User></User>
   <Password></Password>
   <Type>Queue</Type>
   <Factory>com.sun.enterprise.naming.SerialInitContextFactory</Factory>
   <URL>iiop://myserver:1050</URL>
   <JNDI_ID>QueueConnectionFactory</JNDI_ID>
<Queue_Name>Queue</Queue_Name>
<Queue_AutoCommit>YES</Queue_AutoCommit>
 </Provider>
 <Provider>
    ....
 </Provider> 
</JMS_Providers>
 
<Name> プロバイダー名です。この名前は、キュー (&queue.Provider = queueProvider) への接続時に GeneXus で使用します。
<User> ユーザーの ID です。
<Password> <User> で指定したユーザーのパスワードです。
<Type> サーバーで定義されている接続先によって、Queue と Topic のいずれかになります。
<Factory> 初期コンテキスト ファクトリ クラスです。サーバーによって異なります。J2EE アプリケーションサーバーでは、com.sun.enterprise.naming.SerialInitContextFactory です。OpenJMS サーバーでは、org.exolab.jms.jndi.InitialContextFactory です。
<URL> サーバーの URL です。
<JNDI_ID> サーバーで以前定義された接続ファクトリーの名前です。
<Queue_Name> キューの名前 (サーバーで以前定義された送信先) です。
<Queue_AutoCommit> メッセージをコミットしたかどうかを示します。NO を指定した場合はメッセージをメモリーに格納しするため、送信するには &queue.commit() を作成する必要があります。YES にした場合は、&queue.commit() を作成する必要はありません。&queue.Send() メソッドが呼び出されるたびに自動的に送信されます。
詳しくは、「Creating queues with J2EE Software Development Kit (SDK) version 1.3.1 (J2EE ソフトウェア開発キットバージョン 1.3.1 を使用したキューの作成)」を参照してください。

.NET でのプロバイダーの定義

.NET では、アプリケーションの client.exe.config ファイルでプロバイダーを定義する必要があります。AppSetting の下に、次の行を追加します。

<add key="<Queue-ProviderName>" value="<server>\<queue>"/>

ここで、ProviderName は [ &queue.provider ] プロパティに設定する名前、<server> はサーバーの名前、<queue> はサーバーで定義されたキューの名前です。キューを定義するときは、"Queue" という接頭語を付けなければなりませんが、この接頭語は GeneXus では使用しません (ProviderName だけを使用します)。例:

client.exe.config において次のように記載します:

<add key="Queue-MyFirstQueue" value="paul-xp\myQueue"/>

GeneXus では、次のように指定します:

&queue.provider = "MyFirstQueue"

.NET でメッセージキューを定義するには、Message Queuing サービスをインストールしておく必要があります。その後、キューの作成が可能です。キューを作成するときに、トランザクションキューかどうかを設定できることに注意してください。NO に設定した場合は、Queue データタイプのメッセージの Commit メソッドと Rollback メソッドが無効になり、Send メソッドでメッセージが自動的に送信されます (コミットする必要がなくなります)。

適用範囲

オブジェクト: ProcedureTransactionWeb Panel
言語: Java、.NET、Ruby (GeneXus X Evolution 3 まで)
インターフェース: Web




サブページ
Created: 14/09/18 03:20 by Admin Last update: 21/05/20 06:21 by Admin
カテゴリ
Powered by GXwiki 3.0