During the Sending, Delivery and Notification of User- and SignalMesssage's it could happen that the message is not correctly sent, delivered or notified by the first attempt. This can happen for several reasons, for instance a network timeout.

To provide a more reliable send, deliver and notification system, AS4.NET supports retrying when one of these operations fail. The retry functionality of the AS4.NET component is configured in the Sending Processing Mode and Receiving Processing Mode.

1.1. Processing Mode Configuration

1.1.1. Send Operation

The Sending Processing Mode can have a <Reliability/> where a <ReceptionAwareness/> tag can be present. This element must have the following values configured in this structure:

<Reliability>
  <ReceptionAwareness>
      <IsEnabled>true</IsEnabled>
      <RetryCount>3</RetryCount>
      <RetryInterval>00:00:05</RetryInterval>
  </ReceptionAwareness>
</Reliabilty>
  • The IsEnabled flag manipulates whether or not the operation should be retried on failure
  • The RetryCount defines the maximum number of retries that will be attempted
  • The RetryInterval will be the interval at which retries happen

1.1.2. Delivery and Notification Operations

The <Deliver> element in a Receiving Processing Mode and the elements that are used for notification in both a Sending Processing Mode and a Receiving Processing Mode can have a <Reliability/> that defines the retry-functionality.

A <Reliability/> element must have the following values configured in this structure:

<Reliability>
  <IsEnabled>true</IsEnabled>
  <RetryCount>3</RetryCount>
  <RetryInterval>00:00:05</RetryInterval>
</Reliability>
  • The IsEnabled flag manipulates whether or not the operation should be retried on failure
  • The RetryCount defines the maximum number of retries that will be attempted
  • The RetryInterval will be the interval in which retries happen

For the Sending Processing Mode:

  • The <ReceiptHandling/> tag can have a Reliability element
  • The <ErrorHandling/> tag can have a Reliability element
  • The <ExceptionHandling/> tag can have a Reliability element

For the Receiving Processing Mode:

  • The <Deliver/> tag can have a Reliability element
  • The <ExceptionHandling/> tag can have a <Reliability/> element

That's all that needs to be done to enable the retry-functionality during the send, delivery or notification process.

Note that on certain failures, the retry will NOT happen even when it's configured this way. This could happen when the failure that occured is considered FATAL (for example: a 401 HTTP response code which means that there's a problem with permissions). The reason for this is that even when an retry is configured, the message will still fail the second time arround, therefore no retry will happen.

Retryable deliver/notification is only available in version AS4.NET v.3.1.0 and beyond.

  • No labels