[−][src]Crate cerk_router_rule_based
This is a package for CERK. CERK is an open source CloudEvents Router written in Rust with a MicroKernel architecture.
Introduction
CERK lets you route your CloudEvents between different different ports. Ports are transport layer bindings over which CloudEvents can be exchanged. It is built with modularity and portability in mind.
Components
CERK comes with a couple of prefabricated components, but implementing custom components is easy.
A good overview is provided on GitHub.
This Component: Rule Based Router
The rule-based router routes events based on the given configuration.
The configurations are structured in a tree format.
One configuration tree per output port needs to be configured.
The operations And
, Or
, Contains
, StartsWith
and more are supported.
Configurations
The Socket expects a Config::String
as configuration.
The string should be a json deserialized routing_rules::RoutingTable
.
Configuration Examples
Minimal
Config::String("{}".to_string())
Extended
use serde_json; use cerk_router_rule_based::{CloudEventFields, RoutingRules, RoutingTable}; let routing_rules: RoutingTable = [( "dummy-logger-output".to_string(), RoutingRules::And(vec![ RoutingRules::Exact( CloudEventFields::Source, Some("dummy.sequence-generator".to_string()), ), RoutingRules::EndsWith(CloudEventFields::Id, "0".to_string()), ]), )] .iter() .cloned() .collect(); let routing_configs = serde_json::to_string(&routing_rules).unwrap();
Examples
Enums
CloudEventFields | CloudEvent which could be used to route an event. They are mapped to all implemented CloudEvents standards (with some exceptions mentioned per field). |
RoutingRules | routing rules |
Statics
ROUTER_RULE_BASED | This is the pointer for the main function to start the router. |
Functions
router_start | This is the main function to start the router. |
Type Definitions
RoutingTable | routing rules table |