Eventing

The fulfillmenttools eventing mechanism does not guarantee the correct ordering of events. Furthermore, the same event can be emitted multiple times.

Eventing is how the fulfillmenttools platform allows external systems to be notified about business events such as "Order has been routed" or "Pickjob has been completed". Please note that Events are always phrased in the past tense because they describe events that have already happened.

The fulfillmenttools platform's architecture follows the MACH principles. Business features are implemented using independent microservices that send and consume events.

Eventing is available for an callback-url and the Microsoft Azure Service Bus.

Drawing

Timing

Events are the mechanism of choice for decoupling services within a distributed system. From the publication to the message bus to the publication to the subscriptions, it usually takes milliseconds to a few seconds. In the worst case, when our backend services are scaling up, this can take up to 30 seconds.

The following diagram shows the typical timing of events originating from the fulfillmenttools platform to an external system:

Drawing
Typical time of event distribution

Receiving events preparations

A step-wise approach is needed before receiving your first event from fulfillmenttools. Only fulfillmenttools users with the role ADMINISTRATOR can create new subscriptions.

More Eventing-API information can be found here: REST API documentation - Eventing

To create a subscription, take a look into the integration guide Subscribe to events.

Attempts to resend messages that were not delivered successfully

When a configured subscription is not reachable or answers with another response code than HTTP 200 OK the fulfillmenttools platform will automatically initiate a retry of the message. The pattern followed is described as exponential backoff, which basically means that the time that goes by between the actual retry attempts progressively increases. Please see the following diagram that visualizes the approach:

Drawing
Exponential Backoff when retrying messages

As you can see above, when a message cannot be delivered for the first time, there is currently a first retry after 20 seconds. Retries are being performed after every failed attempt. The time between the retries will progressively increase with every retry until it reaches 600 seconds (10 minutes). It will stay at that rate until either

  • the subscription is reachable & acknowledges the message by replying with HTTP 200 OK or

  • message retention is reached (currently: 7 days). It will be dropped then.

Monitoring and alerting

We recommend monitoring your subscription endpoint and using an alerting mechanism to detect failures early before the messages are dropped.

Last updated