INT-3181: Improve JdbcChannelMS usingIdCache doc

JIRA: https://jira.springsource.org/browse/INT-3181

INT-3181: Fix JdbcChannelMS#pollMessageFromGroup

* Add `doRemoveMessageFromGroup` and check its result.
If it is `false` then just return `null`, not polled `Message`
* Add `AbstractTxTimeoutMessageStoreTests#testInt3181ConcurrentPolling` test
and implement it for some DBs
* Make a note regarding MVCC as important in the Doc

Minor Polishing
This commit is contained in:
Artem Bilan
2013-10-29 20:50:20 +02:00
committed by Gary Russell
parent 653df623b2
commit a5d4e3ab48
7 changed files with 113 additions and 9 deletions

View File

@@ -416,6 +416,7 @@
to configure the associated <classname>Poller</classname> with a
<interfacename>TaskExecutor</interfacename> reference.
</para>
<important>
<para>
Keep in mind, though, that if you use a JDBC backed <emphasis>Message Channel</emphasis> and
you are planning on polling the channel and consequently the message
@@ -426,6 +427,13 @@
threads, may not materialize as expected. For example Apache Derby is
problematic in that regard.
</para>
<para>
To achieve better JDBC queue throughput, and avoid issues when different threads may poll the same
<interfacename>Message</interfacename> from the queue, it is <emphasis role="bold">important</emphasis>
to set the <code>usingIdCache</code> property of <classname>JdbcChannelMessageStore</classname> to <code>true</code>
when using databases that do not support MVCC:
</para>
</important>
<programlisting language="xml"><![CDATA[…
<bean id="queryProvider"
class="o.s.i.jdbc.store.channel.PostgresChannelMessageStoreQueryProvider"/>
@@ -459,6 +467,7 @@
<int:channel id="outputChannel" />
…]]></programlisting>
</section>
<section>
<title>Initializing the Database</title>