Event delivery
You can configure how events are delivered for each Subscription by adding a spec to the Subscription
object, as shown in the following example:
Where
- The
deadLetterSink
spec contains configuration settings to enable using a dead letter sink. This tells the Subscription what happens to events that cannot be delivered to the subscriber. When this is configured, events that fail to be delivered are sent to the dead letter sink destination. The destination can be a Knative Service or a URI. In the example, the destination is aService
object, or Knative Service, namedexample-sink
. - The
backoffDelay
delivery parameter specifies the time delay before an event delivery retry is attempted after a failure. The duration of thebackoffDelay
parameter is specified using the ISO 8601 format. For example,PT1S
specifies a 1 second delay. - The
backoffPolicy
delivery parameter can be used to specify the retry back off policy. The policy can be specified as eitherlinear
orexponential
. When using thelinear
back off policy, the back off delay is the time interval specified between retries. When using theexponential
back off policy, the back off delay is equal tobackoffDelay*2^<numberOfRetries>
. retry
specifies the number of times that event delivery is retried before the event is sent to the dead letter sink.
You can configure how events are delivered for each Broker by adding a delivery
spec, as shown in the following example:
apiVersion: eventing.knative.dev/v1
kind: Broker
metadata:
name: with-dead-letter-sink
delivery:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: example-sink
backoffDelay: <duration>
backoffPolicy: <policy-type>
retry: <integer>
- The
deadLetterSink
spec contains configuration settings to enable using a dead letter sink. This tells the Subscription what happens to events that cannot be delivered to the subscriber. When this is configured, events that fail to be delivered are sent to the dead letter sink destination. The destination can be any Addressable object that conforms to the Knative Eventing sink contract, such as a Knative Service, a Kubernetes Service, or a URI. In the example, the destination is aService
object, or Knative Service, namedexample-sink
. - The
backoffDelay
delivery parameter specifies the time delay before an event delivery retry is attempted after a failure. The duration of thebackoffDelay
parameter is specified using the ISO 8601 format. For example,PT1S
specifies a 1 second delay. - The
backoffPolicy
delivery parameter can be used to specify the retry back off policy. The policy can be specified as eitherlinear
orexponential
. When using thelinear
back off policy, the back off delay is the time interval specified between retries. This is a linearly increasing delay, which means that the back off delay increases by the given interval for each retry. When using theexponential
back off policy, the back off delay increases by a multiplier of the given interval for each retry. retry
specifies the number of times that event delivery is retried before the event is sent to the dead letter sink. The initial delivery attempt is not included in the retry count, so the total number of delivery attempts is equal to theretry
value +1.
The following table summarizes which delivery parameters are supported for each Broker implementation type:
Note
deadLetterSink
must be a GCP Pub/Sub topic URI.
googlecloud
Broker only supports the exponential
back off policy.
Failed events may, depending on the specific Channel implementation in use, be enhanced with extension attributes prior to forwarding to thedeadLetterSink
. These extension attributes are as follows:
-
- Type: String
- Description: The HTTP Response Body from the final event dispatch attempt.
- Constraints: Empty if the HTTP Response Body is empty, and may be truncated if the length is excessive.
- Examples:
- ‘Internal Server Error: Failed to process event.’
- ‘{“key”: “value”}’
Channel support
The table below summarizes what delivery parameters are supported for each Channel implementation.
Channel Type | Supported Delivery Parameters |
---|---|
GCP PubSub | none |
In-Memory | deadLetterSink , retry , backoffPolicy , backoffDelay |
Kafka | deadLetterSink , retry , backoffPolicy , |
Natss | none |