Cosminexus V9 アプリケーションサーバ Cosminexus Reliable Messaging

[目次][用語][索引][前へ][次へ]

7.4.10 QueueReceiver(MessageConsumer)インタフェース

QueueReceiver(MessageConsumer)インタフェースは,JMSクライアントがキューからメッセージを受信するために使用します。

<この項の構成>
(1) メッセージの受信
(2) メッセージセレクタの取得
(3) キューレシーバのクローズ
(4) キューの取得
(5) 形式
(6) フィールド
(7) メソッド

(1) メッセージの受信

メッセージを受信できます。メッセージセレクタを設定してQueueReceiverオブジェクトが生成されている場合は,メッセージセレクタに応じたメッセージだけを受信できます。

また,メッセージの受信処理には,次に示す種類があります。

(2) メッセージセレクタの取得

QueueReceiverオブジェクトを生成する際に設定されたメッセージセレクタを取得します。メッセージセレクタについては,「2.6.2 メッセージセレクタ」を参照してください。

(3) キューレシーバのクローズ

QueueReceiverオブジェクトをクローズできます。クローズによって,QueueReceiverオブジェクトに関連づけられたすべてのリソースを解放します。QueueReceiver(MessageConsumer)インタフェースのメソッドは,複数スレッドからの同時発行をJMSで禁止されています。ただし,close()メソッドだけは複数スレッドから同時発行してパラレルに実行できます。

(4) キューの取得

QueueReceiverオブジェクトを生成する際に設定されたキューを取得します。

(5) 形式

 
public interface MessageConsumer
{
  public void     close() throws JMSException;
  public MessageListener
                  getMessageListener() throws JMSException;
  public java.lang.String
                  getMessageSelector() throws JMSException;
  public Message  receive() throws JMSException;
  public Message  receive(long timeout) throws JMSException;
  public Message  receiveNoWait() throws JMSException;
  public void     setMessageListener(MessageListener listener)
                    throws JMSException;
}
 
public interface QueueReceiver extends MessageConsumer
{
  public Queue    getQueue() throws JMSException;
}
 

(6) フィールド

ありません。

(7) メソッド

「(5) 形式」に記載した順序で各メソッドを説明します。

(a) closeメソッド
 
public void close() throws JMSException
 

メッセージコンシューマをクローズします。メッセージコンシューマには幾つかのリソースが割り当てられている場合があるため,リソースが不要になった場合はメッセージコンシューマをクローズしてください。

(b) getMessageListenerメソッド
 
public MessageListener getMessageListener() throws JMSException
 

このメソッドは未サポートです。

このメソッドを発行した場合,nullを返します。

(c) getMessageSelectorメソッド
 
public java.lang.String getMessageSelector() throws JMSException
 

メッセージコンシューマのメッセージセレクタ構文を返します。

(d) receiveメソッド
 
public Message receive() throws JMSException
 

メッセージコンシューマ用に生成された次のメッセージを受信します。

メソッドの発行時に,メッセージコンシューマの生成元であるコネクションがstop状態の場合はnullを返します。メソッドの実行中にコネクションがstop状態になった場合は受信待ち状態でメソッドの処理を続行します。

(e) receiveメソッド
 
public Message receive(long timeout) throws JMSException
 

指定されたタイムアウト間隔内に到着する次のメッセージを受信します。メッセージが到着するか,タイムアウトになるか,またはメッセージコンシューマがクローズされる場合,このメソッドは終了します。timeout引数に0を指定するとタイムアウトになりません。

メッセージの発行時にメッセージコンシューマの生成元のコネクションがstop状態の場合はnullを返します。メソッドの実行中にコネクションがstop状態になった場合は受信を一時的に中断した状態でタイムアウトするまでメソッドの処理を続行します。

なお,receive()発行時に該当キュー内にメッセージがなかった場合は,その後1秒ごとのポーリングによってキュー内のメッセージの有無をチェックします。

(f) receiveNoWaitメソッド
 
public Message receiveNoWait() throws JMSException
 

次のメッセージがすぐに利用できる場合,そのメッセージを受信します。

メッセージの発行時にメッセージコンシューマの生成元のコネクションがstop状態の場合はnullを返します。

(g) setMessageListenerメソッド
 
public void setMessageListener(MessageListener listener)
  throws JMSException
 

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

(h) getQueueメソッド
 
public Queue getQueue() throws JMSException
 

キューレシーバに関連したQueueオブジェクトを返します。