クラス JdbcMessageStore
java.lang.ObjectSE
org.springframework.integration.store.AbstractBatchingMessageGroupStore
org.springframework.integration.store.AbstractMessageGroupStore
org.springframework.integration.jdbc.store.JdbcMessageStore
- 実装されているすべてのインターフェース:
IterableSE<MessageGroup>
、Aware
、BeanClassLoaderAware
、Lifecycle
、Phased
、SmartLifecycle
、BasicMessageGroupStore
、MessageGroupStore
、MessageStore
public class JdbcMessageStore
extends AbstractMessageGroupStore
implements MessageStore, BeanClassLoaderAware, SmartLifecycle
JDBC を介したリレーショナルデータベースを使用した
MessageStore
の実装。必要なテーブルを作成するための SQL スクリプトは、org/springframework/integration/jdbc/schema-*.sql
としてパッケージ化されています。ここで、*
はターゲットデータベース型です。JDBC ベースのメッセージストアを使用して MessageChannel
をバックアップする場合は、代わりにチャネル固有の JdbcChannelMessageStore
の使用を検討してください。この実装は、相関コンポーネント(<aggregator>
など)、<delayer>
などを対象としています。
このクラスは SmartLifecycle
を実装し、start()
で getMessageGroupCount()
を呼び出して、必要なテーブルが DB に存在するかどうかを確認します。テーブルが存在しない場合、アプリケーションコンテキストは起動できません。このチェックは setCheckDatabaseOnStart(boolean)
を介して無効にすることができます。
- 導入:
- 2.0
- 作成者:
- Dave Syer, Oleg Zhurakousky, Matt Stine, Gunnar Hillert, Will Schipp, Gary Russell, Artem Bilan, Ngoc Nhan, Youbin Wu
ネストされたクラスの要約
インターフェース org.springframework.integration.store.MessageGroupStore から継承されたネストクラス / インターフェース
MessageGroupStore.MessageGroupCallback
フィールドのサマリー
フィールドクラス org.springframework.integration.store.AbstractMessageGroupStore から継承されたフィールド
GROUP_ID_MUST_NOT_BE_NULL, INTERRUPTED_WHILE_OBTAINING_LOCK, logger
インターフェース org.springframework.context.SmartLifecycle から継承されたフィールド
DEFAULT_PHASE
コンストラクターの概要
コンストラクターコンストラクター説明JdbcMessageStore
(DataSourceSE dataSource) すべての必須プロパティでMessageStore
を作成します。JdbcMessageStore
(JdbcOperations jdbcOperations) すべての必須プロパティでMessageStore
を作成します。メソッドのサマリー
修飾子と型メソッド説明void
addAllowedPatterns
(StringSE... patterns) 逆直列化が許可されているパッケージ / クラスのパターンを追加します。<T> Message
<T> addMessage
(Message<T> message) 提供されたメッセージを MessageStore に入れます。protected void
doAddMessagesToGroup
(ObjectSE groupId, Message<?>... messages) protected void
doCompleteGroup
(ObjectSE groupId) protected Message
<?> doPollForMessage
(StringSE groupIdKey) このメソッドは、DB への呼び出しを実行して、MessageGroup 内の最も古いメッセージを取得します。必要に応じて、このメソッドをオーバーライドします。protected Message
<?> doPollMessageFromGroup
(ObjectSE groupId) protected boolean
doRemoveMessageFromGroupById
(ObjectSE groupId, UUIDSE messageId) protected void
doRemoveMessageGroup
(ObjectSE groupId) protected void
doRemoveMessagesFromGroup
(ObjectSE groupId, CollectionSE<Message<?>> messages) protected void
doSetGroupCondition
(ObjectSE groupId, StringSE condition) protected void
doSetLastReleasedSequenceNumberForGroup
(ObjectSE groupId, int sequenceNumber) getGroupMetadata
(ObjectSE groupId) メッセージをフェッチせずにグループメタデータを取得します。他のすべてのグループプロパティを提供する必要があります。最初のメッセージの ID を含めることができます。protected JdbcOperations
このクラスがサブクラス化されている場合に、JdbcOperations への参照を取得するために使用されます。Message
<?> getMessage
(UUIDSE id) long
ストア内のメッセージ数を示すオプションの属性。int
すべてのグループにわたるストア内のメッセージの数を示すオプションの属性。Message
<?> getMessageFromGroup
(ObjectSE groupId, UUIDSE messageId) ID を使用してグループからMessage
を取得します。getMessageGroup
(ObjectSE groupId) このグループ ID でBasicMessageGroupStore.addMessageToGroup(Object, Message)
を使用して保存された、現在 MessageStore にあるすべてのメッセージを返します。int
メッセージグループの数を示すオプションの属性。CollectionSE
<Message<?>> getMessagesForGroup
(ObjectSE groupId) 指定されたグループ ID のメッセージを取得します。Message
<?> getOneMessageFromGroup
(ObjectSE groupId) MessageGroup
から 1 つのMessage
を返します。protected StringSE
getQuery
(org.springframework.integration.jdbc.store.JdbcMessageStore.Query base) 入力のパターンを置き換えて、有効な SQL クエリを生成します。boolean
boolean
iterator()
int
messageGroupSize
(ObjectSE groupId) この MessageGroup のサイズを返します。Message
<?> removeMessage
(UUIDSE id) 指定された ID のメッセージを MessageStore から削除し(存在する場合)、それを返します。void
setBeanClassLoader
(ClassLoaderSE classLoader) void
setCheckDatabaseOnStart
(boolean checkDatabaseOnStart) 開始時にデータベースチェッククエリを実行するかどうかのフラグ。void
setDeserializer
(Deserializer<? extends Message<?>> deserializer) バイト配列をメッセージに逆直列化するためのコンバーター。void
このストアで保持されるすべてのメッセージの一意のグループ化識別子。void
setSerializer
(Serializer<? super Message<?>> serializer) メッセージをストレージ用のバイト配列に直列化するためのコンバーター。void
setTablePrefix
(StringSE tablePrefix) テーブルプレフィックスプロパティのパブリック setter。void
start()
void
stop()
streamMessagesForGroup
(ObjectSE groupId) 指定されたグループに保存されているメッセージのストリームを返します。クラス org.springframework.integration.store.AbstractMessageGroupStore から継承されたメソッド
addMessagesToGroup, addMessageToGroup, completeGroup, copy, executeLocked, executeLocked, expireMessageGroups, getLockRegistry, getMessageGroupFactory, isTimeoutOnIdle, pollMessageFromGroup, registerMessageGroupExpiryCallback, removeMessageFromGroupById, removeMessageGroup, removeMessagesFromGroup, removeMessagesFromGroup, setExpiryCallbacks, setGroupCondition, setLastReleasedSequenceNumberForGroup, setLazyLoadMessageGroups, setLockRegistry, setTimeoutOnIdle
クラス org.springframework.integration.store.AbstractBatchingMessageGroupStore から継承されたメソッド
getRemoveBatchSize, setMessageGroupFactory, setRemoveBatchSize
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース java.lang.IterableSE から継承されたメソッド
forEachSE, spliterator
インターフェース org.springframework.context.SmartLifecycle から継承されたメソッド
getPhase, stop
フィールドの詳細
DEFAULT_TABLE_PREFIX
コンストラクターの詳細
JdbcMessageStore
すべての必須プロパティでMessageStore
を作成します。- パラメーター:
dataSource
-DataSource
SE
JdbcMessageStore
すべての必須プロパティでMessageStore
を作成します。- パラメーター:
jdbcOperations
-JdbcOperations
- 導入:
- 4.3.9
メソッドの詳細
setBeanClassLoader
- 次で指定:
- インターフェース
BeanClassLoaderAware
のsetBeanClassLoader
setTablePrefix
テーブルプレフィックスプロパティのパブリック setter。これは、クエリが実行される前にすべてのテーブル名の前に付けられます。デフォルトはDEFAULT_TABLE_PREFIX
です。- パラメーター:
tablePrefix
- 設定する tablePrefix
setRegion
このストアで永続化されるすべてのメッセージの一意のグループ化識別子。複数のリージョンを使用すると、さまざまな目的でストアを(必要に応じて)パーティション化できます。デフォルトはDEFAULT
です。- パラメーター:
region
- 設定する領域名
setSerializer
メッセージをストレージ用のバイト配列に直列化するためのコンバーター。- パラメーター:
serializer
- 設定するシリアライザー
setDeserializer
バイト配列をメッセージに逆直列化するためのコンバーター。- パラメーター:
deserializer
- 設定するデシリアライザー
addAllowedPatterns
逆直列化できるパッケージ / クラスのパターンを追加します。クラスは完全修飾することも、クラス名の最初または最後にワイルドカード "*" を使用することもできます。例:com.foo.*
、*.MyClass
。- パラメーター:
patterns
- パターン。- 導入:
- 5.4
setCheckDatabaseOnStart
public void setCheckDatabaseOnStart(boolean checkDatabaseOnStart) 開始時にデータベースチェッククエリを実行するかどうかのフラグ。- パラメーター:
checkDatabaseOnStart
- データベースチェックを実行しない場合は false。- 導入:
- 6.2
isAutoStartup
public boolean isAutoStartup()- 次で指定:
- インターフェース
SmartLifecycle
のisAutoStartup
start
stop
isRunning
removeMessage
インターフェースからコピーされた説明:MessageStore
指定された ID を持つメッセージが MessageStore から削除されます (存在する場合)。その ID を持つメッセージがストアに存在しない場合は、null
が返されます。このメソッドがMessageGroupStore
に実装されている場合、このメッセージを保持するグループがない場合にのみ、メッセージはストアから削除されます。- 次で指定:
- インターフェース
MessageStore
のremoveMessage
- パラメーター:
id
- メッセージ識別子。- 戻り値:
- メッセージ (ある場合)。
getMessageCount
インターフェースからコピーされた説明:MessageStore
ストア内のメッセージ数を示すオプションの属性。実装は例外をスローすることで応答を拒否する場合があります。- 次で指定:
- インターフェース
MessageStore
のgetMessageCount
- 戻り値:
- メッセージの数。
getMessage
- 次で指定:
- インターフェース
MessageStore
のgetMessage
- パラメーター:
id
- メッセージ識別子。- 戻り値:
- 指定された ID のメッセージ。MessageStore にその ID のメッセージが存在しない場合は null。
getMessageMetadata
インターフェースからコピーされた説明:MessageStore
- 次で指定:
- インターフェース
MessageStore
のgetMessageMetadata
- パラメーター:
id
- メッセージ識別子。- 戻り値:
- 指定された ID の MessageMetadata、またはその ID のメッセージが MessageStore に存在しないか、メッセージにメタデータがない場合(以前のバージョンのレガシーメッセージ)は null。
addMessage
インターフェースからコピーされた説明:MessageStore
提供されたメッセージを MessageStore に入れます。ストアはメッセージを内部で変更する必要がある場合があり、その場合、戻り値は入力と異なる場合があります。戻り値の ID は、MessageStore.getMessage(UUID)
およびMessageStore.removeMessage(UUID)
が正しく動作するようにインデックスとして使用されます。メッセージは不変であるため、同じメッセージを複数回入力しても何も起こりません。- 次で指定:
- インターフェース
MessageStore
のaddMessage
- 型パラメーター:
T
- ペイロード型。- パラメーター:
message
- メッセージ。- 戻り値:
- 保存されたメッセージ。
doAddMessagesToGroup
- 次で指定:
- クラス
AbstractMessageGroupStore
のdoAddMessagesToGroup
getMessageGroupCount
インターフェースからコピーされた説明:MessageGroupStore
メッセージグループの数を示すオプションの属性。実装は、例外をスローすることによって応答を拒否する場合があります。- 次で指定:
- インターフェース
MessageGroupStore
のgetMessageGroupCount
- オーバーライド:
- クラス
AbstractMessageGroupStore
のgetMessageGroupCount
- 戻り値:
- メッセージグループの数
getMessageCountForAllMessageGroups
インターフェースからコピーされた説明:MessageGroupStore
すべてのグループにわたるストア内のメッセージの数を示すオプションの属性。実装は、例外をスローすることによって応答を拒否する場合があります。- 次で指定:
- インターフェース
MessageGroupStore
のgetMessageCountForAllMessageGroups
- オーバーライド:
- クラス
AbstractMessageGroupStore
のgetMessageCountForAllMessageGroups
- 戻り値:
- メッセージの数
messageGroupSize
インターフェースからコピーされた説明:BasicMessageGroupStore
この MessageGroup のサイズを返します。- 次で指定:
- インターフェース
BasicMessageGroupStore
のmessageGroupSize
- パラメーター:
groupId
- グループ識別子。- 戻り値:
- サイズ。
getMessageGroup
インターフェースからコピーされた説明:BasicMessageGroupStore
このグループ ID でBasicMessageGroupStore.addMessageToGroup(Object, Message)
を使用して保存された、現在 MessageStore にあるすべてのメッセージを返します。- 次で指定:
- インターフェース
BasicMessageGroupStore
のgetMessageGroup
- パラメーター:
groupId
- グループ識別子。- 戻り値:
- メッセージのグループ。このキーにメッセージが存在しない場合は空です。
getGroupMetadata
インターフェースからコピーされた説明:MessageGroupStore
メッセージをフェッチせずにグループメタデータを取得します。他のすべてのグループプロパティを提供する必要があります。最初のメッセージの ID を含めることができます。- 次で指定:
- インターフェース
MessageGroupStore
のgetGroupMetadata
- オーバーライド:
- クラス
AbstractMessageGroupStore
のgetGroupMetadata
- パラメーター:
groupId
- グループ ID。- 戻り値:
- メタデータ。
doRemoveMessagesFromGroup
- 次で指定:
- クラス
AbstractMessageGroupStore
のdoRemoveMessagesFromGroup
getMessageFromGroup
インターフェースからコピーされた説明:MessageGroupStore
ID を使用してグループからMessage
を取得します。メッセージがリクエストされたグループに属していない場合は、null
を返します。- 次で指定:
- インターフェース
MessageGroupStore
のgetMessageFromGroup
- パラメーター:
groupId
- メッセージを含むグループの groupId。messageId
- メッセージ ID。- 戻り値:
- リクエストされたグループに属している場合は、ID によるメッセージ。
doRemoveMessageFromGroupById
- オーバーライド:
- クラス
AbstractMessageGroupStore
のdoRemoveMessageFromGroupById
doRemoveMessageGroup
- 次で指定:
- クラス
AbstractMessageGroupStore
のdoRemoveMessageGroup
doCompleteGroup
- 次で指定:
- クラス
AbstractMessageGroupStore
のdoCompleteGroup
doSetGroupCondition
- 次で指定:
- クラス
AbstractMessageGroupStore
のdoSetGroupCondition
doSetLastReleasedSequenceNumberForGroup
doPollMessageFromGroup
- 次で指定:
- クラス
AbstractMessageGroupStore
のdoPollMessageFromGroup
getOneMessageFromGroup
インターフェースからコピーされた説明:MessageGroupStore
MessageGroup
から 1 つのMessage
を返します。- 次で指定:
- インターフェース
MessageGroupStore
のgetOneMessageFromGroup
- パラメーター:
groupId
- グループ識別子。- 戻り値:
Message
getMessagesForGroup
インターフェースからコピーされた説明:MessageGroupStore
指定されたグループ ID のメッセージを取得します。- 次で指定:
- インターフェース
MessageGroupStore
のgetMessagesForGroup
- パラメーター:
groupId
- メッセージを取得するグループ ID。- 戻り値:
- グループのメッセージ。
streamMessagesForGroup
インターフェースからコピーされた説明:MessageGroupStore
指定されたグループに保存されているメッセージのストリームを返します。永続的な実装は、完全に処理されたら閉じる必要があるストリームを返します(たとえば、try-with-resources 句を使用)。デフォルトでは、MessageGroupStore.getMessagesForGroup(Object)
の結果をストリーミングします。- 次で指定:
- インターフェース
MessageGroupStore
のstreamMessagesForGroup
- パラメーター:
groupId
- メッセージを取得するためのグループ ID。- 戻り値:
- このグループのメッセージの
Stream
SE。
iterator
- 次で指定:
- インターフェース
IterableSE<MessageGroup>
のiterator
- 次で指定:
- インターフェース
MessageGroupStore
のiterator
- 戻り値:
- 現在累積されている
MessageGroup
の反復子。
getQuery
入力のパターンを置き換えて、有効な SQL クエリを生成します。この実装は、単純なマップベースのキャッシュを遅延して初期化し、名前付きクエリへの最初のアクセスでテーブルプレフィックスのみを置き換えます。さらに、アクセスはキャッシュから解決されます。- パラメーター:
base
- 変換する SQL クエリ- 戻り値:
- 置換を伴う変換されたクエリ
getJdbcOperations
このクラスがサブクラス化されている場合に、JdbcOperations への参照を取得するために使用されます。- 戻り値:
- JdbcOperations の実装
doPollForMessage