It can happen that first message failed and then all next messages will wait to start processing (message state will change to POSTPONED again and again).
There is new configuration parameter asynch.postponedIntervalWhenFailed that determines interval (in seconds) after that postponed messages will fail.
- classic funnel (msg-funnel component) - filters processing messages (states PROCESSING, WAITING, WAITING_FOR_RES) by funnel_value in specific place of the route, most often before communication with external system to ensure that only one specific value at one time is send to it. For example telco provider can process one request of one specific subscriber (msisdn) at one moment only and we need to filter out requests to this system if there are more requests for one subscriber (msisdn).
- classic funnel with guaranteed order (msg-funnel component) - component has optional parameter guaranteedOrder to turn on guaranteed order - messages are filtered out by funnel_value (it's same as classic funnel) and also msgTimestamp of the message is taken into consideration. Messages must be processed at specific funnel in order by msgTimestamp. PARTLY_FAILED, FAILED andPOSTPONED states are used together with processing states
- guaranteed message processing order - this functionality that is about whole routes
How to use it?
Use org.cleverbusopenhubframework.openhub.api.asynch.AsynchRouteBuilder AsynchRouteBuilder with methods withGuaranteedOrder() or withGuaranteedOrderWithoutFailed() (see Asynchronous messages for more details) or sets AsynchConstants.GUARANTEED_ORDER_HEADER or AsynchConstants.EXCLUDE_FAILED_HEADER to true when you create route definition manually.