pub struct MessageRouter<T: Send + Sync + 'static> { /* private fields */ }Expand description
Routes incoming messages to handlers based on topic patterns.
Supports exact-match and simple wildcard patterns where * matches
any sequence of characters.
§Example
ⓘ
use rskit_messaging::router::MessageRouter;
let router = MessageRouter::<String>::new()
.handle("orders.created", order_handler)
.handle("orders.*", fallback_handler)
.default_handler(catch_all)
.build();Implementations§
Source§impl<T: Send + Sync + 'static> MessageRouter<T>
impl<T: Send + Sync + 'static> MessageRouter<T>
Sourcepub fn handle(self, pattern: &str, handler: Arc<dyn MessageHandler<T>>) -> Self
pub fn handle(self, pattern: &str, handler: Arc<dyn MessageHandler<T>>) -> Self
Register a handler for the given topic pattern.
Patterns support * as a wildcard that matches any sequence of
characters. For example, "content.*" matches "content.discovered".
Patterns are evaluated in registration order; the first match wins.
Sourcepub fn default_handler(self, handler: Arc<dyn MessageHandler<T>>) -> Self
pub fn default_handler(self, handler: Arc<dyn MessageHandler<T>>) -> Self
Register a default handler for messages that match no pattern.
Sourcepub fn build(self) -> Arc<dyn MessageHandler<T>>
pub fn build(self) -> Arc<dyn MessageHandler<T>>
Build an Arc<dyn MessageHandler<T>> that dispatches messages
according to the registered patterns.
Trait Implementations§
Auto Trait Implementations§
impl<T> !RefUnwindSafe for MessageRouter<T>
impl<T> !UnwindSafe for MessageRouter<T>
impl<T> Freeze for MessageRouter<T>
impl<T> Send for MessageRouter<T>
impl<T> Sync for MessageRouter<T>
impl<T> Unpin for MessageRouter<T>
impl<T> UnsafeUnpin for MessageRouter<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more