INT-3367: Add GemfireMetadataStore

JIRA: https://jira.spring.io/browse/INT-3367

INT-3367 Polishing

Rename test class; move to metadata package; doc polishing.
This commit is contained in:
Artem Bilan
2014-04-14 16:40:57 +03:00
committed by Gary Russell
parent 2ee179a891
commit de123c1ee4
8 changed files with 338 additions and 21 deletions

View File

@@ -200,4 +200,39 @@ Note the <emphasis>pool</emphasis> element is configured with the address of a c
</note>
</para>
</section>
<section id="gemfire-metadata-store">
<title>Gemfire Metadata Store</title>
<para>
As of <emphasis>Spring Integration 4.0</emphasis>, a new Gemfire-based
<interfacename>MetadataStore</interfacename>
(<xref linkend="metadata-store"/>) implementation is available. The <classname>GemfireMetadataStore</classname>
can be used to maintain metadata state
across application restarts. This new <interfacename>MetadataStore</interfacename>
implementation can be used with adapters such as:
</para>
<itemizedlist>
<listitem><xref linkend="twitter-inbound"/></listitem>
<listitem><xref linkend="feed-inbound-channel-adapter"/></listitem>
<listitem><xref linkend="file-reading"/></listitem>
<listitem><xref linkend="ftp-inbound"/></listitem>
<listitem><xref linkend="sftp-inbound"/></listitem>
</itemizedlist>
<para>
In order to instruct these adapters to use the new <classname>GemfireMetadataStore</classname>,
simply declare a Spring bean using the bean name <emphasis role="bold">metadataStore</emphasis>.
The <emphasis>Twitter Inbound Channel Adapter</emphasis> and the
<emphasis>Feed Inbound Channel Adapter</emphasis> will both automatically
pick up and use the declared <classname>GemfireMetadataStore</classname>.
</para>
<note>
<para>
The <classname>GemfireMetadataStore</classname> also implements
<interfacename>ConcurrentMetadataStore</interfacename>, allowing it to be reliably shared across
multiple application instances where only one instance will be allowed to store or modify a key's value.
These methods give various levels of concurrency guarantees based on the scope and data policy of the region.
They are implemented in the peer cache and client/server cache but are disallowed in peer Regions having
NORMAL or EMPTY data policies.
</para>
</note>
</section>
</chapter>

View File

@@ -28,6 +28,7 @@
<itemizedlist>
<listitem>PropertiesPersistingMetadataStore</listitem>
<listitem><xref linkend="redis-metadata-store"/></listitem>
<listitem><xref linkend="gemfire-metadata-store"/></listitem>
</itemizedlist>
<para>
The <classname>PropertiesPersistingMetadataStore</classname> is backed by a properties file and a
@@ -49,7 +50,7 @@
<section id="idempotent-receiver">
<title>Idempotent Receiver</title>
<para>
The <emphasis>Metadata Store</emphasis> is useful for implementating the
The <emphasis>Metadata Store</emphasis> is useful for implementing the
EIP <ulink url="http://eaipatterns.com/IdempotentReceiver.html">Idempotent Receiver</ulink> pattern, when
there is need to <emphasis>filter</emphasis> an incoming Message if it has already been processed, and just discard
it or perform some other logic on discarding. The following configuration is an example of how to do this:

View File

@@ -182,6 +182,17 @@
For more information, see <xref linkend="twitter-sog"/>.
</para>
</section>
<section id="4.0-gemfire-metadata">
<title>Gemfire Metadata Store</title>
<para>
The <classname>GemfireMetadataStore</classname> is provided, allowing it to be used, for example,
in a <classname>AbstractPersistentAcceptOnceFileListFilter</classname>
implementation in a multiple application instance/server environment.
For more information, see <xref linkend="metadata-store"/>,
<xref linkend="file-reading"/>, <xref linkend="ftp-inbound"/> and
<xref linkend="sftp-inbound"/>.
</para>
</section>
</section>
<section id="4.0-general">