クラス 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 から継承されたフィールド
INTERRUPTED_WHILE_OBTAINING_LOCK, loggerインターフェース org.springframework.context.SmartLifecycle から継承されたフィールド
DEFAULT_PHASEコンストラクターの概要
コンストラクターコンストラクター説明JdbcMessageStore(DataSourceSE dataSource) すべての必須プロパティでMessageStoreを作成します。JdbcMessageStore(JdbcOperations jdbcOperations) すべての必須プロパティでMessageStoreを作成します。メソッドのサマリー
修飾子と型メソッド説明voidaddAllowedPatterns(StringSE... patterns) 逆直列化が許可されているパッケージ / クラスのパターンを追加します。<T> Message<T> addMessage(Message<T> message) 提供されたメッセージを MessageStore に入れます。protected voiddoAddMessagesToGroup(ObjectSE groupId, Message<?>... messages) protected voiddoCompleteGroup(ObjectSE groupId) protected @Nullable Message<?> doPollForMessage(StringSE groupIdKey) このメソッドは、DB への呼び出しを実行して、MessageGroup 内の最も古いメッセージを取得します。必要に応じて、このメソッドをオーバーライドします。protected @Nullable Message<?> doPollMessageFromGroup(ObjectSE groupId) protected booleandoRemoveMessageFromGroupById(ObjectSE groupId, UUIDSE messageId) protected voiddoRemoveMessageGroup(ObjectSE groupId) protected voiddoRemoveMessagesFromGroup(ObjectSE groupId, CollectionSE<Message<?>> messages) protected voiddoSetGroupCondition(ObjectSE groupId, StringSE condition) protected voiddoSetLastReleasedSequenceNumberForGroup(ObjectSE groupId, int sequenceNumber) @Nullable MessageGroupMetadatagetGroupMetadata(ObjectSE groupId) メッセージをフェッチせずにグループメタデータを取得します。他のすべてのグループプロパティを提供する必要があります。最初のメッセージの ID を含めることができます。protected JdbcOperationsこのクラスがサブクラス化されている場合に、JdbcOperations への参照を取得するために使用されます。@Nullable Message<?> getMessage(UUIDSE id) longストア内のメッセージ数を示すオプションの属性。intすべてのグループにわたるストア内のメッセージの数を示すオプションの属性。@Nullable Message<?> getMessageFromGroup(ObjectSE groupId, UUIDSE messageId) ID を使用してグループからMessageを取得します。getMessageGroup(ObjectSE groupId) このグループ ID でBasicMessageGroupStore.addMessageToGroup(Object, Message)を使用して保存された、現在 MessageStore にあるすべてのメッセージを返します。intメッセージグループの数を示すオプションの属性。@Nullable MessageMetadataCollectionSE<Message<?>> getMessagesForGroup(ObjectSE groupId) 指定されたグループ ID のメッセージを取得します。@Nullable Message<?> getOneMessageFromGroup(ObjectSE groupId) MessageGroupから 1 つのMessageを返します。protected StringSEgetQuery(org.springframework.integration.jdbc.store.JdbcMessageStore.Query base) 入力のパターンを置き換えて、有効な SQL クエリを生成します。booleanbooleaniterator()intmessageGroupSize(ObjectSE groupId) この MessageGroup のサイズを返します。@Nullable Message<?> removeMessage(UUIDSE id) 指定された ID のメッセージを MessageStore から削除し(存在する場合)、それを返します。voidsetBeanClassLoader(ClassLoaderSE classLoader) voidsetCheckDatabaseOnStart(boolean checkDatabaseOnStart) 開始時にデータベースチェッククエリを実行するかどうかのフラグ。voidsetDeserializer(Deserializer<? extends Message<?>> deserializer) バイト配列をメッセージに逆直列化するためのコンバーター。voidこのストアで保持されるすべてのメッセージの一意のグループ化識別子。voidsetSerializer(Serializer<? super Message<?>> serializer) メッセージをストレージ用のバイト配列に直列化するためのコンバーター。voidsetTablePrefix(StringSE tablePrefix) テーブルプレフィックスプロパティのパブリック setter。voidstart()voidstop()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, isPauseable, stop
フィールドの詳細
DEFAULT_TABLE_PREFIX
コンストラクターの詳細
JdbcMessageStore
すべての必須プロパティでMessageStoreを作成します。- パラメーター:
dataSource-DataSourceSE
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 - パラメーター:
groupId- グループ ID。- 戻り値:
- メタデータ。
doRemoveMessagesFromGroup
- 次で指定:
- クラス
AbstractMessageGroupStoreのdoRemoveMessagesFromGroup
getMessageFromGroup
インターフェースからコピーされた説明:MessageGroupStoreID を使用してグループから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
インターフェースからコピーされた説明:MessageGroupStoreMessageGroupから 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。- 戻り値:
- このグループのメッセージの
StreamSE。
iterator
- 次で指定:
- インターフェース
IterableSE<MessageGroup>のiterator - 次で指定:
- インターフェース
MessageGroupStoreのiterator - 戻り値:
- 現在累積されている
MessageGroupの反復子。
getQuery
入力のパターンを置き換えて、有効な SQL クエリを生成します。この実装は、単純なマップベースのキャッシュを遅延して初期化し、名前付きクエリへの最初のアクセスでテーブルプレフィックスのみを置き換えます。さらに、アクセスはキャッシュから解決されます。- パラメーター:
base- 変換する SQL クエリ- 戻り値:
- 置換を伴う変換されたクエリ
getJdbcOperations
このクラスがサブクラス化されている場合に、JdbcOperations への参照を取得するために使用されます。- 戻り値:
- JdbcOperations の実装
doPollForMessage