mirror of https://github.com/knative/docs.git
Kafka ResetOffset Examples (#4012)
* Kafka ResetOffset Examples * remove title block linefeed from autoformatting * Use a better Kafka Channel install link
This commit is contained in:
parent
4c8f6e411b
commit
7aba7060a8
|
@ -0,0 +1,91 @@
|
|||
---
|
||||
title: "Apache Kafka ResetOffset Example"
|
||||
linkTitle: "ResetOffset Example"
|
||||
weight: 20
|
||||
type: "docs"
|
||||
---
|
||||
|
||||
Kafka backed Channels are potentially different from other implementations in
|
||||
that they provide temporal persistence of events. This capability allows for
|
||||
certain advanced use cases to be supported, including the ability to "replay"
|
||||
prior events via repositioning the current location in the event-stream. This
|
||||
capability can be extremely useful when attempting to recover from unexpected
|
||||
Subscriber downtime.
|
||||
|
||||
The
|
||||
[ResetOffset CRD](https://github.com/knative-sandbox/eventing-kafka/tree/main/config/command/resetoffset)
|
||||
exposes the ability to manipulate the location of the ConsumerGroup Offsets in
|
||||
the event stream of a given Knative Subscription. Without the ResetOffset CRD
|
||||
you would be responsible for manually stopping ConsumerGroups and manipulating
|
||||
Offsets.
|
||||
|
||||
!!! note
|
||||
Repositioning the ConsumerGroup Offsets will impact the event ordering and
|
||||
is intended for failure recovery scenarios. This capability needs to be used
|
||||
with caution only after reviewing the CRD documentation linked above.
|
||||
|
||||
!!! note
|
||||
ResetOffsets are currently only supported by the Distributed KafkaChannel
|
||||
implementation. It is expected that the Consolidated KafkaChannel
|
||||
implementation will support them in the near future.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- A Kubernetes cluster with a Knative
|
||||
[Kafka Channel](https://knative.dev/docs/eventing/channels/channels-crds/)
|
||||
installed.
|
||||
- A valid KafkaChannel and Subscription exist.
|
||||
|
||||
## Examples
|
||||
|
||||
The following examples assume a Kubernetes Namespace called `my-namespace`
|
||||
containing a KafkaChannel Subscription named `my-subscription` and should be
|
||||
updated according to your use case.
|
||||
|
||||
### Repositioning the Offsets to the oldest available event
|
||||
|
||||
The following ResetOffset instance will move the offsets back to the oldest
|
||||
available event in the Kafka Topic retention window.
|
||||
|
||||
```yaml
|
||||
apiVersion: kafka.eventing.knative.dev/v1alpha1
|
||||
kind: ResetOffset
|
||||
metadata:
|
||||
name: my-resetoffset
|
||||
namespace: my-namespace
|
||||
spec:
|
||||
offset:
|
||||
time: earliest
|
||||
ref:
|
||||
apiVersion: messaging.knative.dev/v1
|
||||
kind: Subscription
|
||||
namespace: my-namespace
|
||||
name: my-subscription
|
||||
```
|
||||
|
||||
### Repositioning the Offsets to a specific point in the event stream
|
||||
|
||||
The following ResetOffset instance will move the offsets back to the specified
|
||||
point in the Kafka Topic retention window. You will need to set an appropriate
|
||||
[RFC3339](https://datatracker.ietf.org/doc/html/rfc3339) timestamp relative to
|
||||
your use case.
|
||||
|
||||
```yaml
|
||||
apiVersion: kafka.eventing.knative.dev/v1alpha1
|
||||
kind: ResetOffset
|
||||
metadata:
|
||||
name: my-resetoffset
|
||||
namespace: my-namespace
|
||||
spec:
|
||||
offset:
|
||||
time: "2021-06-17T17:30:00Z"
|
||||
ref:
|
||||
apiVersion: messaging.knative.dev/v1
|
||||
kind: Subscription
|
||||
namespace: my-namespace
|
||||
name: my-subscription
|
||||
```
|
||||
|
||||
!!! note
|
||||
The ResetOffset CRD is a single use operation or "command", and should be
|
||||
deleted from the cluster once it has completed execution.
|
Loading…
Reference in New Issue