diff --git a/docs/src/reference/docbook/changes-1.0-2.0.xml b/docs/src/reference/docbook/changes-1.0-2.0.xml index 651fc43b6e..00ddfc105b 100644 --- a/docs/src/reference/docbook/changes-1.0-2.0.xml +++ b/docs/src/reference/docbook/changes-1.0-2.0.xml @@ -82,7 +82,7 @@ We now provide support for the Message Store pattern. The Message Store provides a strategy for persisting messages on behalf of any process whose scope extends beyond a single transaction, such as the Aggregator and Resequencer. Many sections of this document provide samples on how to use a Message Store as it - affects several areas of Spring Integration. See , + affects several areas of Spring Integration. See , , , , , and for more details diff --git a/docs/src/reference/docbook/gemfire.xml b/docs/src/reference/docbook/gemfire.xml index acf85d86a9..16b426d6a7 100644 --- a/docs/src/reference/docbook/gemfire.xml +++ b/docs/src/reference/docbook/gemfire.xml @@ -125,4 +125,44 @@ xsi:schemaLocation="http://www.springframework.org/schema/integration/gemfire This adapter also supports the order attribute which may be useful if it is bound to a PublishSubscribeChannel. + +
+ Gemfire Message Store + + + As described in EIP, a Message Store allows you to persist Messages. + This can be very useful when dealing with components that have a capability to buffer messages + (QueueChannel, Aggregator, Resequencer, etc.) if reliability is a concern. + In Spring Integration, the MessageStore strategy also provides the foundation for the + ClaimCheck pattern, which is described in EIP as well. + + + + Spring Integration's Gemfire module provides the GemfireMessageStore which is an implementation of both the + the MessageStore strategy (mainly used by the QueueChannel and ClaimCheck + patterns) and the MessageGroupStore strategy (mainly used by the Aggregator and + Resequencer patterns). + + + + + + + + + + + + + +]]> + + + + Above is a sample GemfireMessageStore configuration that shows its usage by a QueueChannel + and an Aggregator. As you can see it is a simple bean configuration, and it expects a + GemFireCache (created by CacheFactoryBean) as a constructor argument. + +
diff --git a/docs/src/reference/docbook/jdbc.xml b/docs/src/reference/docbook/jdbc.xml index cfde9d9106..052e89046a 100644 --- a/docs/src/reference/docbook/jdbc.xml +++ b/docs/src/reference/docbook/jdbc.xml @@ -158,8 +158,8 @@ binding of the incoming message to the query. -
- Message Store +
+ JDBC Message Store The JDBC module provides an implementation of the Spring Integration MessageStore (important in the Claim Check pattern) diff --git a/docs/src/reference/docbook/message-store.xml b/docs/src/reference/docbook/message-store.xml new file mode 100644 index 0000000000..d5e3d219b5 --- /dev/null +++ b/docs/src/reference/docbook/message-store.xml @@ -0,0 +1,55 @@ + +
+ Message Store + + Enterprise Integration Patterns (EIP) identifies several patterns that have capabilities to buffer messages. For example; + Aggregator buffers messages until they can be released and QueueChannel buffers + messages until consumers explicitly receive Messages from this QueueChannel. + Because of the failures that can occur at any point within your message flow EIP components that buffer + messages also introduce a point where messages could be lost. + + + + To mitigate the risk of loosing Messages EIP defines Message Store pattern which allows + EIP components to store Messages typically in some type of persistent store (e.g., RDBMS). + + + + Spring Integration provides support for Message Store pattern by + a) defining a org.springframework.integration.store.MessageStore strategy and providing several implementations of this strategy, + b) exposing message-store attribute on all components that have capabilities to buffer messages allowing + you to inject an instance of the MessageStore. + + + Details on how to configure a specific Message Store implementation and/or how to inject + MessasgeStore implementation into the specific buffering component are described + throughout the manual (see specific component, such as QueueChannel, Aggregator, + Resequencer etc.), but here are a couple of samples to give you an idea: + + + + QueueChannel + + +]]> + + + + Aggregator + ]]> + + + + By default Messages are stored in-memory using org.springframework.integration.store.SimpleMessageStore implementation of MessageStore. + However we also provide implementations of MessageStore for various data-stores. Below is a complete list of supported implementations: + + + - uses RDBMS to store Messages + - uses Redis key/value datastore to store Messages + - uses MongoDB document store to store Messages + - uses Gemfire distributed cache to store Messages + + + +
diff --git a/docs/src/reference/docbook/system-management.xml b/docs/src/reference/docbook/system-management.xml index a914c9ccec..e62904f29c 100644 --- a/docs/src/reference/docbook/system-management.xml +++ b/docs/src/reference/docbook/system-management.xml @@ -6,5 +6,7 @@ + +