Class MessagingContext

java.lang.Object
nablarch.fw.messaging.MessagingContext
All Implemented Interfaces:
Closeable, AutoCloseable
Direct Known Subclasses:
JmsMessagingProvider.Context, MockMessagingContext, RequestTestingMessagingProvider.RequestTestingMessagingContext, WmqMessagingContext

@Published(tag="architect") public abstract class MessagingContext extends Object implements Closeable
メッセージングサーバとの間に開かれるセッションに対するラッパー。 このクラスのインスタンスはスレッドローカル変数上で管理されており、 getInstance()を用いてインスタンスを獲得する。 本クラスでは、以下の機能を提供する。
  • メッセージ送信
  • メッセージ同期送信
  • メッセージ受信
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    カレントスレッドにメッセージコンテキストを紐づける。
    abstract void
    現在のセッションを終了し、保持しているリソースを開放する。
    static void
    カレントスレッド上のメッセージコンテキストを閉じた上で除去する。 メッセージングコンテキストがカレントスレッド上に存在しない場合はなにもしない。
    protected void
    メッセージングの証跡ログを出力する。
    カレントスレッドに紐づけられているメッセージングコンテキストを返す。 メッセージングコンテキストが現在のスレッド上に存在しない場合は実行時例外 を送出する。
    receiveMessage(String receiveQueue, String messageId, long timeout)
    指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。
    receiveSync(String receiveQueue)
    指定した受信キュー上のメッセージを取得する。 キュー上にメッセージが存在していない場合は、メッセージを受信するまで ブロックする。
    receiveSync(String receiveQueue, long timeout)
    指定した受信キュー上のメッセージを取得する。 キュー上にメッセージが存在していない場合は、メッセージを受信するまで ブロックする。
    receiveSync(String receiveQueue, String messageId, long timeout)
    指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。
    メッセージを送信する。
    abstract String
    メッセージを送信する。
    メッセージの同期送信を行う。 プロバイダ側設定のタイムアウト時間を経過した場合はnullを返す。
    sendSync(SendingMessage message, long timeout)
    メッセージの同期送信を行う。 メッセージ送信後、応答電文を受信するか、指定した時間が経過するまでブロックする。 タイムアウトした場合はnullを返す。 タイムアウト時間に0以下の数値を設定した場合、 プロバイダ側のデフォルトタイムアウト時間を経過した場合はnullを返す。 タイムアウト時間が指定された場合は有効期間ヘッダにタイムアウト時間を指定する。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • MessagingContext

      public MessagingContext()
  • Method Details

    • getInstance

      public static MessagingContext getInstance() throws IllegalStateException
      カレントスレッドに紐づけられているメッセージングコンテキストを返す。 メッセージングコンテキストが現在のスレッド上に存在しない場合は実行時例外 を送出する。
      Returns:
      メッセージングコンテキスト
      Throws:
      IllegalStateException - メッセージングコンテキストが現在のスレッド上に存在しない場合
    • attach

      public static void attach(MessagingContext context)
      カレントスレッドにメッセージコンテキストを紐づける。
      Parameters:
      context - カレントスレッドに紐づけるメッセージングコンテキスト
    • detach

      public static void detach()
      カレントスレッド上のメッセージコンテキストを閉じた上で除去する。 メッセージングコンテキストがカレントスレッド上に存在しない場合はなにもしない。
    • send

      public String send(SendingMessage message)
      メッセージを送信する。
      Parameters:
      message - 送信メッセージ
      Returns:
      送信メッセージのメッセージID
    • sendSync

      public ReceivedMessage sendSync(SendingMessage message)
      メッセージの同期送信を行う。 プロバイダ側設定のタイムアウト時間を経過した場合はnullを返す。
      Parameters:
      message - 送信メッセージ
      Returns:
      応答メッセージ
    • sendSync

      public ReceivedMessage sendSync(SendingMessage message, long timeout)
      メッセージの同期送信を行う。 メッセージ送信後、応答電文を受信するか、指定した時間が経過するまでブロックする。 タイムアウトした場合はnullを返す。 タイムアウト時間に0以下の数値を設定した場合、 プロバイダ側のデフォルトタイムアウト時間を経過した場合はnullを返す。 タイムアウト時間が指定された場合は有効期間ヘッダにタイムアウト時間を指定する。
      Parameters:
      message - 送信メッセージ
      timeout - 応答タイムアウト (単位:ミリ秒、0以下の数値の場合はブロックし続ける)
      Returns:
      応答受信メッセージ(タイムアウトした場合はnull)
    • receiveSync

      public ReceivedMessage receiveSync(String receiveQueue)
      指定した受信キュー上のメッセージを取得する。 キュー上にメッセージが存在していない場合は、メッセージを受信するまで ブロックする。
      Parameters:
      receiveQueue - 受信キューの論理名
      Returns:
      受信したメッセージ
    • receiveSync

      public ReceivedMessage receiveSync(String receiveQueue, long timeout)
      指定した受信キュー上のメッセージを取得する。 キュー上にメッセージが存在していない場合は、メッセージを受信するまで ブロックする。
      Parameters:
      receiveQueue - 受信キューの論理名
      timeout - 応答タイムアウト (単位:ミリ秒、0以下の数値の場合はブロックし続ける)
      Returns:
      受信したメッセージ
    • receiveSync

      public ReceivedMessage receiveSync(String receiveQueue, String messageId, long timeout)
      指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。
      Parameters:
      receiveQueue - 受信キューの論理名
      messageId - 送信電文のメッセージID (応答受信でない場合はnull)
      timeout - 応答タイムアウト (単位:ミリ秒、0以下の数値の場合はブロックし続ける)
      Returns:
      受信したメッセージ(タイムアウトした場合はnull)
    • sendMessage

      public abstract String sendMessage(SendingMessage message)
      メッセージを送信する。
      Parameters:
      message - 送信メッセージ
      Returns:
      送信メッセージのメッセージID
    • receiveMessage

      public abstract ReceivedMessage receiveMessage(String receiveQueue, String messageId, long timeout)
      指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。
      Parameters:
      receiveQueue - 受信キューの論理名
      messageId - 送信電文のメッセージID (応答受信でない場合はnull)
      timeout - 応答タイムアウト (単位:ミリ秒、0以下の数値の場合はブロックし続ける)
      Returns:
      受信したメッセージ(タイムアウトした場合はnull)
    • close

      public abstract void close()
      現在のセッションを終了し、保持しているリソースを開放する。
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • emitLog

      protected void emitLog(InterSystemMessage<?> message)
      メッセージングの証跡ログを出力する。
      Parameters:
      message - メッセージオブジェクト