diff --git a/docs/src/reference/docbook/channel.xml b/docs/src/reference/docbook/channel.xml
index cc0a36e1db..7dfdedfffe 100644
--- a/docs/src/reference/docbook/channel.xml
+++ b/docs/src/reference/docbook/channel.xml
@@ -438,58 +438,47 @@ public Message> receive(final PollableChannel> channel) { ... }]]>Persistent QueueChannel Configuration
- Since QueueChannel provides capability to buffer Messages it also introduces a point of failure
- where Messages could be lost in the event of the system crash. To mitigate this risk, QueueChannel is
- backed by a persistent store which is exposed via simple strategy interface MessageStore:
- getMessage(UUID id);
-
- Message addMessage(Message message);
-
- Message> removeMessage(UUID id);
-
- int getMessageCount();
-}]]>
- For more details on MessageStore see .
+ Since a QueueChannel provides the capability to buffer Messages, but does so in-memory only
+ by default, it also introduces a possibility that Messages could be lost in the event of a system failure. To
+ mitigate this risk, a QueueChannel may be backed by a persistent implementation of the
+ MessageGroupStore strategy interface. For more details on MessageGroupStore
+ and MessageStore see .
- When QueueChannel receives the Message it will add the Message to the MessageStore
- by invoking addMessage(Message) method and when the Message is polled from the MessageStore
- it is removed from it via removeMessage(UUID) method.
+ When a QueueChannel receives a Message, it will add it to the Message Store, and when a Message
+ is polled from a QueueChannel, it is removed from the Message Store.
- By default any QueueChannel is bootstrapped with SimpleMessageStore which is
- in-memory Map-based implementation of the MessageStore interface. However Spring Integration
- also provides JdbcMessageStore to allow QueueChannel to be backed by an RDBMS.
+ By default any QueueChannel only stores its Messages in an in-memory Queue
+ and can therefore lead to the lost message scenario mentioned above. However Spring Integration
+ provides a JdbcMessageStore to allow a QueueChannel to be backed by an RDBMS.
- You configure MessageStore for QueueChannel via message-store attribute.
+ You can configure a Message Store for any QueueChannel by adding the
+ message-store attribute as shown in the next example.
-
-
+
+
-
-
-]]>
+]]>
- You can also see that you can configure JdbcMessageStore via namespace support provided by
- Spring Integration JDBC module. All you need to do is inject any standard Spring datasource. Spring Integration JDBC
- module also provides schemas for most popular databases. These schemas are located in
- org.springframework.integration.jdbc package of Spring Integration JDBC module.
+ The above example also shows that JdbcMessageStore can be configured with the namespace support
+ provided by the Spring Integration JDBC module. All you need to do is inject any javax.sql.DataSource
+ instance. The Spring Integration JDBC module also provides schema DDL for most popular databases. These schemas are located in
+ the org.springframework.integration.jdbc package of that module (spring-integration-jdbc).
- One thing to remember is that with any transactional persistent store (e.g., JdbcMessageStore)
- the messages removed from such persistent store will only be completely removed if transaction completed
- successfully, otherwise transaction will roll back and the Message will not be lost.
+ One thing to remember is that with any transactional persistent store (e.g., JdbcMessageStore),
+ a Message removed from the store will only be permanently removed if the transaction completes
+ successfully, otherwise the transaction will roll back and the Message will not be lost.
- And of course you can alway provide your own implementation of MessageStore interface
+ Many other implementations of the Message Store will be available as the growing number of Spring projects
+ related to "NoSQL" data stores provide the underlying support. Of course, you can always provide your own implementation
+ of the MessageGroupStore interface if you cannot find one that meets your particular needs.
-
-
PublishSubscribeChannel Configuration