Class JmsMessagingProvider.Context

java.lang.Object
nablarch.fw.messaging.MessagingContext
nablarch.fw.messaging.provider.JmsMessagingProvider.Context
All Implemented Interfaces:
Closeable, AutoCloseable
Enclosing class:
JmsMessagingProvider

public static class JmsMessagingProvider.Context extends MessagingContext
メッセージングコンテキストのJMSベース実装
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    JMSヘッダー名称
  • Constructor Summary

    Constructors
    Constructor
    Description
    Context(jakarta.jms.Connection conn, JmsMessagingProvider provider)
    コンストラクタ
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    現在のセッションを終了し、保持しているリソースを開放する。
    protected jakarta.jms.Queue
    指定されたJMSキューに対する退避キューを返す。 該当するキューが存在しない場合はMessagingExceptionを送出する。
    protected String
    getQueueNameOf(jakarta.jms.Destination queue)
    指定されたJMSキューの論理名を逆引きする。 キューが登録されていない場合はnullを返す。
    protected jakarta.jms.Queue
    getQueueOf(String queueName)
    指定されたキュー名に対するJMSQueueインスタンスを返す。
    receiveMessage(String queueName, String messageId, long timeout)
    指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。
    protected void
    rejectIfExpiresRedeliverLimit(jakarta.jms.Message message, String queueName)
    MOMによるメッセージの受信リトライ回数が規定回数を越えていた場合は、 メッセージ退避キューに転送し、実行時例外を送出する。
    メッセージを送信する。

    Methods inherited from class nablarch.fw.messaging.MessagingContext

    attach, detach, emitLog, getInstance, receiveSync, receiveSync, receiveSync, send, sendSync, sendSync

    Methods inherited from class java.lang.Object

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

    • Context

      public Context(jakarta.jms.Connection conn, JmsMessagingProvider provider) throws jakarta.jms.JMSException
      コンストラクタ
      Parameters:
      conn - JMSセッション
      provider - 各種設定
      Throws:
      jakarta.jms.JMSException - JMSプロバイダ側でエラーが発生した場合
  • Method Details

    • close

      public void close()
      現在のセッションを終了し、保持しているリソースを開放する。 使用中のセッションを終了し、コネクションをプールに返却する。 この実装では、JMSコネクションファクトリがコネクションプールを内蔵する ことを前提としており、コネクションを単にclose()している。 キャッシュしているMessageProducerとMessageConsumerをクローズする。 MessageProducerとMessageConsumerのクローズ処理で例外が発生した場合、 TRACEレベルのログ出力を行い、例外の再スローは行わない。
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in class MessagingContext
    • sendMessage

      public String sendMessage(SendingMessage message)
      メッセージを送信する。 この実装では、JMSの実装系を使用して送信処理を行う。
      Specified by:
      sendMessage in class MessagingContext
      Parameters:
      message - 送信メッセージ
      Returns:
      送信メッセージのメッセージID
    • receiveMessage

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

      protected jakarta.jms.Queue getQueueOf(String queueName) throws MessagingException
      指定されたキュー名に対するJMSQueueインスタンスを返す。
      Parameters:
      queueName - 取得するキューの論理名
      Returns:
      JMSQueueインスタンス
      Throws:
      MessagingException - 指定されたキュー名に対するキューオブジェクトが登録されて いなかった場合。
    • getQueueNameOf

      protected String getQueueNameOf(jakarta.jms.Destination queue)
      指定されたJMSキューの論理名を逆引きする。 キューが登録されていない場合はnullを返す。
      Parameters:
      queue - キューインスタンス
      Returns:
      キューの論理名
    • getPoisonQueueOf

      protected jakarta.jms.Queue getPoisonQueueOf(String queueName) throws MessagingException
      指定されたJMSキューに対する退避キューを返す。 該当するキューが存在しない場合はMessagingExceptionを送出する。
      Parameters:
      queueName - 受信キューの論理名
      Returns:
      JMSQueueインスタンス
      Throws:
      MessagingException - 退避キューが定義されていない場合。
    • rejectIfExpiresRedeliverLimit

      protected void rejectIfExpiresRedeliverLimit(jakarta.jms.Message message, String queueName) throws MessagingException, jakarta.jms.JMSException
      MOMによるメッセージの受信リトライ回数が規定回数を越えていた場合は、 メッセージ退避キューに転送し、実行時例外を送出する。
      Parameters:
      message - 受信メッセージ
      queueName - 受信キューの論理名
      Throws:
      MessagingException - 受信リトライ回数が規定回数を越えていた場合
      jakarta.jms.JMSException - JMS API側で問題が発生した場合。