INT-2426: Add Idempotent Receiver EIP

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

INT-2426: pushed `final` modifier fix for Java 6 compatibility

INT-2426: Rework logic to the `MetadataStore`

INT-2426: `IdempotentReceiver` -> `IdempotentReceiverInterceptor`

* Move `Idempotent Filtering` logic to the `IdempotentReceiverInterceptor`, which should be applied as a regular
AOP `Advice` to the `MessageHandler#handleMessage`
* Provide an xml component `<idempotent-receiver>`
* Introduce `IdempotentReceiverAutoProxyCreator` to get deal with `IdempotentReceiverInterceptor` and `MessageHandler`s.
The `Proxying` logic is based on the mapping between interceptor and `consumer endpoint` `ids`
* Introduce `MetadataStoreSelector` along side with `MetadataKeyStrategy` and `ExpressionMetadataKeyStrategy` implementation

INT-2426: Introduce `IdempotentReceiver` annotation

Add `IdempotentReceiverIntegrationTests` in the JMX module to be sure that all proxying works well.

INT-2426: Polishing according PR comments

* Rename `IdempotentReceiverAutoProxyCreatorInitializer`
* Add support for several `IRI` for the one `MH`
* Polishing JavaDocs

INT-2426: Add `What's New` note

Doc Polishing.

More Doc Polishing

Use Timestamp (hex) instead of Id for Value

Facilitate cleanup.
This commit is contained in:
Artem Bilan
2014-09-24 19:54:43 +03:00
committed by Gary Russell
parent 6e81950236
commit ff2b15ea9e
23 changed files with 1573 additions and 11 deletions

View File

@@ -582,4 +582,10 @@ public class MyAdvisedFilter {
the transaction, you would put the transaction advice first.
</para>
</section>
<section id="idempotent-receiver">
<title>Idempotent Receiver EIP Pattern</title>
<para>
TBD
</para>
</section>
</section>

View File

@@ -47,8 +47,8 @@
<classname>RedisMetadataStore</classname> implement <interfacename>ConcurrentMetadataStore</interfacename>.
These provide for atomic updates and can be used across multiple component or application instances.
</para>
<section id="idempotent-receiver">
<title>Idempotent Receiver</title>
<section id="idempotent-receiver-pattern">
<title>Idempotent Receiver and Metadata Store</title>
<para>
The <emphasis>Metadata Store</emphasis> is useful for implementing the
EIP <ulink url="http://eaipatterns.com/IdempotentReceiver.html">Idempotent Receiver</ulink> pattern, when
@@ -70,6 +70,9 @@
The <code>value</code> of the idempotent entry may be some expiration date, after which that entry should
be removed from <emphasis>Metadata Store</emphasis> by some scheduled reaper.
</para>
<para>
Also see <xref linkend="idempotent-receiver"/>.
</para>
</section>
</section>

View File

@@ -41,6 +41,17 @@
See <xref linkend="routing-slip"/> for more information.
</para>
</section>
<section id="4.1-idempotent-receiver">
<title>Idempotent Receiver Pattern</title>
<para>
The <emphasis>Idempotent Receiver</emphasis> EIP implementation is now provided
via the <code>&lt;idempotent-receiver&gt;</code> component in XML, or the
<classname>IdempotentReceiverInterceptor</classname> and
<interfacename>IdempotentReceiver</interfacename> annotation when using Java
Configuration.
See <xref linkend="idempotent-receiver"/> and their JavaDocs for more information.
</para>
</section>
<section id="4.1-BoonJsonObjectMapper">
<title>BoonJsonObjectMapper</title>
<para>