Spring Integration
  1. Spring Integration
  2. INT-2426

Provide better support for Idempotent Receiver pattern

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Minor 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
          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
          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
          Gary Russell added a comment -

          Merged

          Show
          Gary Russell added a comment - Merged

            People

            • Assignee:
              Artem Bilan
              Reporter:
              Oleg Zhurakousky
            • Votes:
              7 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: