Skip to content

Channels

channel models the transport path messages flow through (for example Kafka, MQTT, SQS, or HTTP streams).

Example

This example defines a Kafka channel and shows a service sending an event through that channel.

main.ec
channel OrdersChannel {
version 1.0.0
name "Orders Channel"
summary "Carries order events"
protocol "Kafka"
address "orders.events.v1"
owner platform-team
route AnalyticsChannel@1.0.0
}
service OrdersService {
version 1.0.0
sends event OrderCreated@1.0.0 to OrdersChannel@1.0.0
}

Properties

PropertyTypeRequiredDescriptionExample
versionsemverYesResource version.1.0.0
namestringNoDisplay name (defaults to id)."Orders Channel"
summarystringNoShort description."Carries order events"
ownerreferenceNo (repeatable)Team/user owner reference.owner platform-team
protocolstringNoTransport technology/protocol."Kafka"
addressstringNoBroker/topic/queue address."orders.events.v1"
routereferenceNo (repeatable)Route from one channel to another.route AnalyticsChannel@1.0.0
parameterblockNo (repeatable)Dynamic address parameter.parameter sensorId { ... }
draftbooleanNoMarks resource as draft.draft true
deprecatedbooleanNoMarks resource as deprecated.deprecated true

Channel parameters

Use parameter to define dynamic segments in channel addresses:

main.ec
channel sensor-data {
version 1.0.0
address "sensors/{sensorId}/data"
protocol "MQTT"
parameter sensorId {
description "Unique sensor identifier"
default "sensor-001"
enum ["sensor-001", "sensor-042", "sensor-099"]
examples ["sensor-001", "sensor-042"]
}
}

Parameter properties

PropertyTypeRequiredDescriptionExample
descriptionstringNoWhat the parameter represents"Unique sensor identifier"
defaultstringNoDefault value"sensor-001"
enumstring[]NoAllowed values["sensor-001", "sensor-042"]
examplesstring[]NoExample values["sensor-001", "sensor-042"]

Channel routing

Channels can route to other channels, modeling message pipelines:

main.ec
channel Ingestion {
version 1.0.0
protocol "Kafka"
route Filtered
route Archive
}
channel Filtered {
version 1.0.0
protocol "Kafka"
route Analytics
}

Used by services

UsageExample
Send through a channelsends event OrderCreated to OrdersChannel@1.0.0
Receive from a channelreceives event PaymentProcessed from PaymentsChannel@1.0.0