public class JdbcMessageStore
extends org.springframework.integration.store.AbstractMessageGroupStore
implements org.springframework.integration.store.MessageStore
MessageStore using a relational database via JDBC. SQL scripts to create the necessary
tables are packaged as org/springframework/integration/jdbc/schema-*.sql, where * is the
target database type.
If you intend backing a MessageChannel using a JDBC-based Message Store,
please consider using the channel-specific JdbcChannelMessageStore instead.
This implementation is intended for correlation components (e.g. <aggregator>),
<delayer> and similar.
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
CREATED_DATE_KEY
Deprecated.
since 5.0. This constant isn't used any more.
|
static java.lang.String |
DEFAULT_TABLE_PREFIX
Default value for the table prefix property.
|
static java.lang.String |
SAVED_KEY
Deprecated.
since 5.0. This constant isn't used any more.
|
| Constructor and Description |
|---|
JdbcMessageStore(javax.sql.DataSource dataSource)
Create a
MessageStore with all mandatory properties. |
JdbcMessageStore(org.springframework.jdbc.core.JdbcOperations jdbcOperations)
Create a
MessageStore with all mandatory properties. |
| Modifier and Type | Method and Description |
|---|---|
<T> org.springframework.messaging.Message<T> |
addMessage(org.springframework.messaging.Message<T> message) |
void |
addMessagesToGroup(java.lang.Object groupId,
org.springframework.messaging.Message<?>... messages) |
void |
addWhiteListPatterns(java.lang.String... patterns)
Add patterns for packages/classes that are allowed to be deserialized.
|
void |
completeGroup(java.lang.Object groupId) |
protected org.springframework.messaging.Message<?> |
doPollForMessage(java.lang.String groupIdKey)
This method executes a call to the DB to get the oldest Message in the MessageGroup
Override this method if need to.
|
protected org.springframework.jdbc.core.JdbcOperations |
getJdbcOperations()
To be used to get a reference to JdbcOperations
in case this class is subclassed
|
org.springframework.messaging.Message<?> |
getMessage(java.util.UUID id) |
long |
getMessageCount() |
int |
getMessageCountForAllMessageGroups() |
org.springframework.integration.store.MessageGroup |
getMessageGroup(java.lang.Object groupId) |
int |
getMessageGroupCount() |
org.springframework.integration.store.MessageMetadata |
getMessageMetadata(java.util.UUID id) |
java.util.Collection<org.springframework.messaging.Message<?>> |
getMessagesForGroup(java.lang.Object groupId) |
org.springframework.messaging.Message<?> |
getOneMessageFromGroup(java.lang.Object groupId) |
protected java.lang.String |
getQuery(org.springframework.integration.jdbc.store.JdbcMessageStore.Query base)
Replace patterns in the input to produce a valid SQL query.
|
java.util.Iterator<org.springframework.integration.store.MessageGroup> |
iterator() |
int |
messageGroupSize(java.lang.Object groupId) |
org.springframework.messaging.Message<?> |
pollMessageFromGroup(java.lang.Object groupId) |
org.springframework.messaging.Message<?> |
removeMessage(java.util.UUID id) |
void |
removeMessageGroup(java.lang.Object groupId) |
void |
removeMessagesFromGroup(java.lang.Object groupId,
java.util.Collection<org.springframework.messaging.Message<?>> messages) |
void |
setDeserializer(org.springframework.core.serializer.Deserializer<? extends org.springframework.messaging.Message<?>> deserializer)
A converter for deserializing byte arrays to messages.
|
void |
setLastReleasedSequenceNumberForGroup(java.lang.Object groupId,
int sequenceNumber) |
void |
setLobHandler(org.springframework.jdbc.support.lob.LobHandler lobHandler)
Override the
LobHandler that is used to create and unpack large objects in SQL queries. |
void |
setRegion(java.lang.String region)
A unique grouping identifier for all messages persisted with this store.
|
void |
setSerializer(org.springframework.core.serializer.Serializer<? super org.springframework.messaging.Message<?>> serializer)
A converter for serializing messages to byte arrays for storage.
|
void |
setTablePrefix(java.lang.String tablePrefix)
Public setter for the table prefix property.
|
addMessageToGroup, copy, expireMessageGroups, getGroupMetadata, getMessageGroupFactory, isTimeoutOnIdle, registerMessageGroupExpiryCallback, removeMessagesFromGroup, setExpiryCallbacks, setLazyLoadMessageGroups, setTimeoutOnIdlegetRemoveBatchSize, setMessageGroupFactory, setRemoveBatchSizepublic static final java.lang.String DEFAULT_TABLE_PREFIX
@Deprecated public static final java.lang.String SAVED_KEY
@Deprecated public static final java.lang.String CREATED_DATE_KEY
public JdbcMessageStore(javax.sql.DataSource dataSource)
MessageStore with all mandatory properties.dataSource - a DataSourcepublic JdbcMessageStore(org.springframework.jdbc.core.JdbcOperations jdbcOperations)
MessageStore with all mandatory properties.jdbcOperations - a JdbcOperationspublic void setTablePrefix(java.lang.String tablePrefix)
DEFAULT_TABLE_PREFIX.tablePrefix - the tablePrefix to setpublic void setRegion(java.lang.String region)
DEFAULT.region - the region name to setpublic void setLobHandler(org.springframework.jdbc.support.lob.LobHandler lobHandler)
LobHandler that is used to create and unpack large objects in SQL queries. The default is
fine for almost all platforms, but some Oracle drivers require a native implementation.lobHandler - a LobHandlerpublic void setSerializer(org.springframework.core.serializer.Serializer<? super org.springframework.messaging.Message<?>> serializer)
serializer - the serializer to setpublic void setDeserializer(org.springframework.core.serializer.Deserializer<? extends org.springframework.messaging.Message<?>> deserializer)
deserializer - the deserializer to setpublic void addWhiteListPatterns(java.lang.String... patterns)
com.foo.*, *.MyClass.patterns - the patterns.public org.springframework.messaging.Message<?> removeMessage(java.util.UUID id)
removeMessage in interface org.springframework.integration.store.MessageStore@ManagedAttribute public long getMessageCount()
getMessageCount in interface org.springframework.integration.store.MessageStorepublic org.springframework.messaging.Message<?> getMessage(java.util.UUID id)
getMessage in interface org.springframework.integration.store.MessageStorepublic org.springframework.integration.store.MessageMetadata getMessageMetadata(java.util.UUID id)
getMessageMetadata in interface org.springframework.integration.store.MessageStorepublic <T> org.springframework.messaging.Message<T> addMessage(org.springframework.messaging.Message<T> message)
addMessage in interface org.springframework.integration.store.MessageStorepublic void addMessagesToGroup(java.lang.Object groupId,
org.springframework.messaging.Message<?>... messages)
addMessagesToGroup in interface org.springframework.integration.store.MessageGroupStore@ManagedAttribute public int getMessageGroupCount()
getMessageGroupCount in interface org.springframework.integration.store.MessageGroupStoregetMessageGroupCount in class org.springframework.integration.store.AbstractMessageGroupStore@ManagedAttribute public int getMessageCountForAllMessageGroups()
getMessageCountForAllMessageGroups in interface org.springframework.integration.store.MessageGroupStoregetMessageCountForAllMessageGroups in class org.springframework.integration.store.AbstractMessageGroupStore@ManagedAttribute public int messageGroupSize(java.lang.Object groupId)
messageGroupSize in interface org.springframework.integration.store.BasicMessageGroupStorepublic org.springframework.integration.store.MessageGroup getMessageGroup(java.lang.Object groupId)
getMessageGroup in interface org.springframework.integration.store.BasicMessageGroupStorepublic void removeMessagesFromGroup(java.lang.Object groupId,
java.util.Collection<org.springframework.messaging.Message<?>> messages)
removeMessagesFromGroup in interface org.springframework.integration.store.MessageGroupStorepublic void removeMessageGroup(java.lang.Object groupId)
removeMessageGroup in interface org.springframework.integration.store.BasicMessageGroupStorepublic void completeGroup(java.lang.Object groupId)
completeGroup in interface org.springframework.integration.store.MessageGroupStorepublic void setLastReleasedSequenceNumberForGroup(java.lang.Object groupId,
int sequenceNumber)
setLastReleasedSequenceNumberForGroup in interface org.springframework.integration.store.MessageGroupStorepublic org.springframework.messaging.Message<?> pollMessageFromGroup(java.lang.Object groupId)
pollMessageFromGroup in interface org.springframework.integration.store.BasicMessageGroupStorepublic org.springframework.messaging.Message<?> getOneMessageFromGroup(java.lang.Object groupId)
getOneMessageFromGroup in interface org.springframework.integration.store.MessageGroupStorepublic java.util.Collection<org.springframework.messaging.Message<?>> getMessagesForGroup(java.lang.Object groupId)
getMessagesForGroup in interface org.springframework.integration.store.MessageGroupStorepublic java.util.Iterator<org.springframework.integration.store.MessageGroup> iterator()
iterator in interface java.lang.Iterable<org.springframework.integration.store.MessageGroup>iterator in interface org.springframework.integration.store.MessageGroupStoreprotected java.lang.String getQuery(org.springframework.integration.jdbc.store.JdbcMessageStore.Query base)
base - the SQL query to be transformedprotected org.springframework.jdbc.core.JdbcOperations getJdbcOperations()
protected org.springframework.messaging.Message<?> doPollForMessage(java.lang.String groupIdKey)
groupIdKey - String representation of message group ID