Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions docs/eventing/channels/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,27 @@ aliases:
- /docs/eventing/channels/default-channels
---

Channels are Kubernetes [custom resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) that define a single event forwarding and persistence layer.
An event might be relevant to many consumers. One way to handle this is to directly tie each consumer
to the producer that creates the event, making a fan-out pattern.

A channel provides an event delivery mechanism that can fan-out received events, through subscriptions, to multiple destinations, or sinks. Examples of sinks include brokers and Knative services.
This fan-out pattern, however, introduces complex problems for the application architecture, such as
retries, timeouts, and persistence. Instead of burdening the producer with these problems, you can
use channels.

<img src="images/channel-workflow.png" width="80%">
A channel is a Kubernetes [custom resource](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) that defines a single event forwarding and persistence layer.

Channels function as event delivery mechanisms that can fan out received events, through
subscriptions, to multiple destinations, referred to as sinks. Examples of sinks include brokers and
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit, not sure I'd add Broker as an example of a sink.

Knative services.

<img src="images/channel-workflow.png" width="80%"><br>

There are several kinds of channels, but they all make it possible to deliver events to all relevant
consumers and, importantly, make the events persist.

When you create a channel, you can choose which kind of channel is most appropriate for your use
case. For development use cases, an in-memory channel might suffice, but for production persistence,
you might need retry and replay capabilities.

## Next steps

Expand Down