Uploaded image for project: 'Spring Integration'
  1. Spring Integration
  2. INT-2426

Provide better support for Idempotent Receiver pattern

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Minor
    • Resolution: Complete
    • Affects Version/s: None
    • Fix Version/s: 4.1 RC1
    • Component/s: Core
    • Labels:

      Description

      Although as you can see from the forum discussion it is already supported by the framework via many different components (Filter, Router, Aggragator) we probably need a a more formal support for something like <idempotent-filter>

        Issue Links

          Activity

          Hide
          abilan Artem Bilan added a comment -

          Hey there!
          Let me express my view.
          It may look like:

          <idempotent-filter id="fooIdempotent" input-channel="in" output-channel="out" disracd-channel="duplicate"
                             message-store="messageStore" expression="payload.id + '|' + payload.date"/>

          where:

          • id - is involved in 'messageGroupId' as it is in the <delayer>
          • message-store - store messages in the group to identify duplicates in the future
          • expression - the idempotent key

          It should be covered by MessageGroup, because I may have several similar filters in the application.
          We can use expression evaluation result 'idempotent key' as message id for store, or iterate over entire group and compare results for each message.

          I don't know... May be we can follow with Cammel expirience too (http://camel.apache.org/idempotent-consumer.html) and add other usefull options.

          Of course, the case "Make balance $110" is not considered: it's fully up to the business logic of concrete application.

          Cheers

          Show
          abilan Artem Bilan added a comment - Hey there! Let me express my view. It may look like: < idempotent -filter id = "fooIdempotent" input-channel = "in" output-channel = "out" disracd-channel = "duplicate" message-store = "messageStore" expression = "payload.id + '|' + payload.date" /> where: id - is involved in 'messageGroupId' as it is in the <delayer> message-store - store messages in the group to identify duplicates in the future expression - the idempotent key It should be covered by MessageGroup , because I may have several similar filters in the application. We can use expression evaluation result 'idempotent key' as message id for store, or iterate over entire group and compare results for each message. I don't know... May be we can follow with Cammel expirience too ( http://camel.apache.org/idempotent-consumer.html ) and add other usefull options. Of course, the case "Make balance $110" is not considered: it's fully up to the business logic of concrete application. Cheers
          Hide
          grussell Gary Russell added a comment -

          Merged

          Show
          grussell Gary Russell added a comment - Merged

            People

            • Assignee:
              abilan Artem Bilan
              Reporter:
              oleg.zhurakousky@springsource.com Oleg Zhurakousky
            • Votes:
              7 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: