public class CachingConnectionFactory extends SingleConnectionFactory
Session
EE キャッシングと MessageProducer
EE キャッシングを追加する SingleConnectionFactory
サブクラス。この ConnectionFactory は、デフォルトで "reconnectOnException" property
を "true" に切り替え、基礎となる接続の自動回復を可能にします。 デフォルトでは、単一のセッションのみがキャッシュされ、リクエストされたセッションがさらに作成されてオンデマンドで破棄されます。同時実行性の高い環境の場合は、"sessionCacheSize" value
を上げることを検討してください。
JMS 1.0.2 API を使用する場合、この ConnectionFactory は実行時に使用される JMS API メソッドに従ってキュー / トピックモードに切り替わります。createQueueConnection
および createTopicConnection
はそれぞれキュー / トピックモードになります。一般的な createConnection
呼び出しは、両方のモードを提供できる JMS 1.1 接続につながります。
Spring Framework 5 の時点で、このクラスは JMS 2.0 JMSContext
呼び出しをサポートしているため、実行時に JMS 2.0 API が存在する必要があります。それでも、アプリケーションのセットアップによって実際の JMS 2.0 呼び出しがトリガーされない限り、JMS 1.1 ドライバー(JMS 2.0 API にバインドされている)に対して実行できます。
注: この ConnectionFactory では、共有接続から取得したすべてのセッションを明示的に閉じる必要があります。これはネイティブ JMS アクセスコードの通常の推奨事項です。ただし、この ConnectionFactory では、セッションの再利用を実際に許可するために、その使用が必須です。
キャッシュされたセッションから取得された MessageConsumers は、セッションが最終的にプールから削除されるまで閉じられないことにも注意してください。これにより、意味上の副作用が発生する場合があります。永続サブスクライバーの場合、論理 Session.close()
呼び出しもサブスクリプションを閉じます。同じセッションハンドルで同じサブスクリプションの恒久コンシューマーを再登録することはサポートされていません。まず、キャッシュされたセッションを閉じて再取得します。
logger
コンストラクターと説明 |
---|
CachingConnectionFactory() Bean スタイルの使用のために新しい CachingConnectionFactory を作成します。 |
CachingConnectionFactory(ConnectionFactoryEE targetConnectionFactory) 指定されたターゲット ConnectionFactory の新しい CachingConnectionFactory を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected SessionEE | getCachedSessionProxy(SessionEE target, LinkedListSE<SessionEE> sessionList) 指定されたセッションを、すべてのメソッド呼び出しを委譲するがクローズ呼び出しを適応させるプロキシでラップします。 |
protected SessionEE | getSession(ConnectionEE con, IntegerSE mode) 指定されたモードのキャッシュされたセッションをチェックします。 |
int | getSessionCacheSize() JMS セッションキャッシュに必要なサイズを返します(JMS セッション型ごと)。 |
boolean | isCacheConsumers() JMS セッションインスタンスごとに JMS MessageConsumers をキャッシュするかどうかを返します。 |
boolean | isCacheProducers() JMS セッションインスタンスごとに JMS MessageProducers をキャッシュするかどうかを返します。 |
void | resetConnection() セッションキャッシュもリセットします。 |
void | setCacheConsumers(boolean cacheConsumers) JMS セッションインスタンスごとに JMS MessageConsumers をキャッシュするかどうかを指定します(具体的には、宛先ごとに 1 つの MessageConsumer、セレクター文字列、セッション)。 |
void | setCacheProducers(boolean cacheProducers) JMS セッションインスタンスごとに JMS MessageProducers をキャッシュするかどうかを指定します(より具体的には、宛先とセッションごとに 1 つの MessageProducer)。 |
void | setSessionCacheSize(int sessionCacheSize) JMS セッションキャッシュに必要なサイズを指定します(JMS セッション型ごと)。 |
afterPropertiesSet, closeConnection, createConnection, createConnection, createContext, createContext, createContext, createContext, createQueueConnection, createQueueConnection, createSession, createTopicConnection, createTopicConnection, destroy, doCreateConnection, getClientId, getConnection, getExceptionListener, getSharedConnectionProxy, getTargetConnectionFactory, initConnection, isReconnectOnException, onException, prepareConnection, setClientId, setExceptionListener, setReconnectOnException, setTargetConnectionFactory
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public CachingConnectionFactory()
public CachingConnectionFactory(ConnectionFactoryEE targetConnectionFactory)
targetConnectionFactory
- ターゲット ConnectionFactorypublic void setSessionCacheSize(int sessionCacheSize)
このキャッシュサイズは、セッション確認応答型(auto、client、dups_ok、transacted)あたりのキャッシュされたセッション数の最大制限です。結果として、キャッシュされたセッションの実際の数は、指定された値の最大 4 倍になる可能性があります。異なる確認応答型を混合して一致させることはほとんどありません。
デフォルトは 1 です。: 単一のセッションをキャッシュし、必要に応じてさらにセッションを(再)作成します。キャッシュされたセッションの数を増やす場合は、10 などの数を指定します。ただし、同時実行性の低いシナリオでは 1 で十分な場合があります。
public int getSessionCacheSize()
public void setCacheProducers(boolean cacheProducers)
デフォルトは "true" です。常にオンデマンドで MessageProducers を再作成するには、これを "false" に切り替えます。
public boolean isCacheProducers()
public void setCacheConsumers(boolean cacheConsumers)
デフォルトは "true" です。常にオンデマンドで MessageConsumers を再作成するには、これを "false" に切り替えます。
public boolean isCacheConsumers()
public void resetConnection()
protected SessionEE getSession(ConnectionEE con, IntegerSE mode) throws JMSExceptionEE
SingleConnectionFactory
の getSession
con
- 操作する JMS 接続 mode
- セッション確認モード (Session.TRANSACTED
または共通モードの 1 つ)null
は生の標準セッションの作成を示します JMSExceptionEE
- JMS API によってスローされた場合 protected SessionEE getCachedSessionProxy(SessionEE target, LinkedListSE<SessionEE> sessionList)
target
- ラップする元のセッション sessionList
- 指定されたセッションが属するキャッシュされたセッションのリスト