Spring Integration
  1. Spring Integration
  2. INT-2426

Provide better support for Idempotent Receiver pattern

    Details

    • Type: New Feature New Feature
    • Status: Open
    • Priority: Minor Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: General Backlog
    • Component/s: Core
    • Labels:
      None

      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>

        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

          People

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

            Dates

            • Created:
              Updated: