The routing of an incoming message can be delayed the for following reasons:
- There are delays in a rule that match (conversation variable delay, target id delay).
- There is a Time Delay set that indicates that routing should be performed after a certain time
- Previously delayed rule executions exist for the target endpoint.
- It is an UPDATE and we don't have the ID of the target system.
Rule delay execution order:
We have 3 different types of rule delay: Time delay, conversation variable delay, and endpoint delay, and we can use one, two, or all of them at the same time.
When configuring more than one rule delay, the delay will run in this order:
- first the time delay
- then, the conversation variable delay
- and lastly, the endpoint delay.
Triggering delayed rule executions
A delayed rule execution is delayed until new messages or acks are added to the conversation. The retry is triggered by:
- A New Inbound message is added to the conversation
- Ack received from the delayed routing rule execution's target endpoint
The processing for delayed rule executions is as follows:
- Find the active version of the routing rule for which the execution is delayed. If a newer active version of a rule exists than the one used when a delay was created then the active version is always used.
- Retrieve the message to be routed for the delayed rule execution, i.e. the inbound message.
- If the rule fulfills the delay conditions then leave the delayed rule execution otherwise discard it and complete the routing.
Triggering time delayed rule executions
Retry is triggered a little bit differently in case of time-delayed executions.
- ONEiO checks the state of Time-Delayed Routing Rule Executions in a certain time interval (currently 60 seconds) and gets executions that should be processed.
- Routing was performed for these executions.
Notice that during the routing step some other delay conditions could match and in this case routing will be handled as regularly delayed execution.