Hitachi

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


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

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

〈この項の構成〉

(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

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

  • クローズされているメッセージコンシューマをクローズしても例外は発生しません。

  • このメソッドはMessageConsumerインタフェースでは唯一,複数スレッドから同時に発行できます。

  • 引数

    ありません。

  • 戻り値

    ありません。

  • 例外

    例外クラス

    説明

    JMSException

    内部エラーのためにJMSプロバイダがメッセージコンシューマをクローズする処理に失敗しました。

    例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。

(b) getMessageListenerメソッド

public MessageListener getMessageListener() throws JMSException

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

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

  • 引数

    ありません。

  • 戻り値

    メッセージコンシューマのリスナまたはnull(リスナが設定されていない場合)。

  • 例外

    ありません。

(c) getMessageSelectorメソッド

public java.lang.String getMessageSelector() throws JMSException

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

  • 引数

    ありません。

  • 戻り値

    メッセージコンシューマのメッセージセレクタ。

  • 例外

    例外クラス

    説明

    JMSException

    セッション,コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

    内部エラーのためにJMSプロバイダがメッセージセレクタの取得に失敗しました。

    例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。

(d) receiveメソッド

public Message receive() throws JMSException

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

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

  • 引数

    ありません。

  • 戻り値

    メッセージコンシューマ用に生成される次のメッセージ,またはnull(メッセージコンシューマが同時にクローズされる場合)。

  • 例外

    例外クラス

    説明

    JMSException

    セッション,コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

    内部エラーのためにJMSプロバイダが次のメッセージの受信に失敗しました。

    例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。

(e) receiveメソッド

public Message receive(long timeout) throws JMSException

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

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

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

  • 引数

    引数名

    説明

    timeout

    タイムアウト値(ミリ秒)

  • 戻り値

    メッセージコンシューマ用に生成される次のメッセージ,またはnull(タイムアウトになるか,メッセージコンシューマが同時にクローズされる場合)。

  • 例外

    例外クラス

    説明

    JMSException

    セッション,コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

    内部エラーのためにJMSプロバイダが次のメッセージの受信に失敗しました。

    例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。

(f) receiveNoWaitメソッド

public Message receiveNoWait() throws JMSException

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

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

  • 引数

    ありません。

  • 戻り値

    メッセージコンシューマ用に生成された次のメッセージ,またはnull(受信できる次のメッセージがない場合)。

  • 例外

    例外クラス

    説明

    JMSException

    セッション,コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

    内部エラーのためにJMSプロバイダが次のメッセージの受信に失敗しました。

    例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。

(g) setMessageListenerメソッド

public void setMessageListener(MessageListener listener)
  throws JMSException

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

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

  • 引数

    引数名

    説明

    listener

    メッセージ配送先のリスナ

  • 戻り値

    ありません。

  • 例外

    ありません。

(h) getQueueメソッド

public Queue getQueue() throws JMSException

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

  • 引数

    ありません。

  • 戻り値

    レシーバのQueueオブジェクト。

  • 例外

    例外クラス

    説明

    JMSException

    セッション,コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

    内部エラーのためにJMSプロバイダがQueueReceiverオブジェクトに関連づけられたキューの取得に失敗しました。

    例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。