Dynamic topic routing
Dynamic topic routing lets you filter incoming messages by metadata and automatically direct them to different output topics. Use it when you need to sort messages by type, source, or other metadata attributes without manual intervention — reducing unnecessary load on your consumers and downstream systems.
Prerequisites
- An active Event Streams environment with at least three topics configured. These will be used as Input Topic, Default Topic, an Output Topic.
- The Event Streams - Administrator role. Users with the Event Streams - Access role can view, search, and sort routes but cannot create, edit, or delete them.
- Topics must have at least one subscription to appear as selectable options when configuring a route.
Key concepts
A route is a named rule set that reads messages from an input topic, evaluates them against one or more filter groups, and sends each message to the matching output topic.
A filter group is a named collection of one or more conditions. Each filter group has a designated output topic. When a message is evaluated, the system checks each filter group in order and routes the message to the first group whose conditions are satisfied.
A condition is a key-value rule applied to message metadata — for example, matching messages where a region key equals us-east. Conditions within a filter group are combined using AND or OR logic.
The default topic (also called the unfiltered topic) is a mandatory catch-all. Any message that does not satisfy any filter group is sent here, preventing message loss.
Create a route
- In your Event Streams environment, click the Routes tab.
- Click Create Route.
- Enter a Name for the route.
- The Pattern Type field is preset to Filter and is not editable.
- In the Input Topic field, select the topic to consume messages from. Topics without a subscription show a validation error, prompting you to select or create a subscription to route the message.
- In the Input Subscription field, select the subscription to use for consuming messages from that topic.
- In the Default Topic field, select a topic to receive any messages that do not match a filter group. This field is required. The default topic cannot be the same as the input topic.
- Click Add Filter to create a filter group.
- Enter a Filter Group Name.
- Select an Output Topic. The output topic cannot be the same as the input topic or the default topic.
- Click Add Condition, then fill in:
- Key — the metadata attribute name to evaluate.
- Operation — the comparison operator.
- Value — the value to compare against.
- Click Save to save the condition. The condition collapses and displays as
Key + Operation + Value. - To add more conditions to the same group, click Add Condition again and select AND or OR to define how it combines with the previous condition.
- To add additional filter groups, click Add Filter again and repeat step 8.
- Click Save to create the route.

The route starts automatically after creation and appears in the Routes table with a Running status.
The input topic cannot serve as an output topic or the default topic. If you select the same topic for multiple roles, the system displays an error.
Enable or pause a route
Routes run automatically when created. You can pause and restart a route at any time from the Routes table.
To pause a running route:
- In the Routes table, find the route and click its toggle in the Running column.
- In the confirmation dialog, click Pause.
The route stops processing messages. Its status changes to Paused and the toggle turns gray.
To start a paused route:
- In the Routes table, find the route and click its toggle in the Running column.
- In the confirmation dialog, click Start.

The route resumes processing. Its status changes to Running and the toggle turns blue.
A route may briefly show a Starting status while the backend initializes. This updates to Running automatically. If an error occurs during startup or pause, the status changes to Error and a tooltip describes the issue. The toggle and all edit and delete actions are unavailable while a route is in an error state.
Edit a route
A route must be paused before you can edit it. The Edit button is disabled for running routes.
- Pause the route if it is running.
- Click the Edit icon (pencil) in the Actions column, or click the route name.
- In the side drawer, make your changes:
- Update the default topic.
- Edit a filter group name or output topic directly in the filter group heading.
- To edit a condition, hover over it and click the Edit icon, update the fields, then click Save.
- To delete a condition, hover over it and click the Delete icon. You cannot delete the last remaining condition in a filter group.
- To delete an entire filter group, hover over the filter group name and click Delete.
- Click Save to apply changes.
To discard changes without saving, click the X button at the top of the drawer. The system prompts you to confirm before discarding.
Duplicate a route
- In the Routes table, click the Duplicate icon (copy) in the Actions column.
- The Create Route page opens pre-populated with the original route's configuration.
- Review or update the settings, then click Create and Start Route.
The duplicated route is saved and immediately starts running.
Delete a route
A route must be paused before you can delete it. The Delete button is disabled for running routes.
- Pause the route if it is running.
- Click the Delete icon (trash can) in the Actions column.
- In the confirmation dialog, click Delete.
Deletion is permanent. If a topic or subscription is associated with an active route, Event Streams blocks deletion of that topic or subscription until you remove it from all routes first.
Configuration reference
Routes table columns
| Column | Description |
|---|---|
| Route Name | The name of the route. Click to open the route in edit mode. |
| Input Topic | The topic the route consumes messages from. Click to navigate to the Subscriptions page for that topic. |
| Subscription | The subscription linked to the input topic. |
| Output Topic(s) | The default topic followed by a comma-separated list of output topics defined in each filter group. |
| Pattern Type | Always set to Filter. Not editable. |
| Messages Processed | The number of messages processed by the route, per session.(A session represents a single, uninterrupted period of route activity. Every time you stop and restart a route, a new session or broker restart begins with Messages processed as 0.) |
| Status | The current state of the route: Starting, Running, Paused, or Error. |
| Running | Toggle to start or pause the route. |
| Actions | Edit (pencil), Duplicate (copy), and Delete (trash can). Edit and Delete are available only when the route is paused. |
Filter condition operators
| Operator | Value type | Description |
|---|---|---|
| EQUALS | Alphanumeric | Matches when the metadata key exactly equals the specified value. Applies to string and numeric values. |
| NOT EQUALS | Alphanumeric | Matches when the metadata key does not equal the specified value. Applies to string and numeric values. |
| CONTANS | Alphanumeric | Matches when the metadata key includes the specified value anywhere within the string. It treats the data as text and checks for a partial match.
|
| LESS THAN | Numeric | Matches when the metadata value is less than the specified number. |
| GREATER THAN | Numeric | Matches when the metadata value is greater than the specified number. |
| LESS THAN OR EQUAL | Numeric | Matches when the metadata value is less than or equal to the specified number. |
| GREATER THAN OR EQUAL | Numeric | Matches when the metadata value is greater than or equal to the specified number. |
Route limits by account type
| Account type | Maximum routes per environment |
|---|---|
| Free tier | 2 |
| Paid tier | 25 |
When the limit is reached, the Create Route button is disabled and a tooltip indicates the limit for your account type. Admin users who have reached the limit can still edit and delete existing routes.