Expand description
Circulate is a lightweight PubSub framework that supports both async and non-async code. This project is written for BonsaiDb. While BonsaiDb’s async relies upon tokio, this crate is runtime agnostic thanks to the excellent crate flume.
Async Example
let relay = Relay::default();
let subscriber = relay.create_subscriber();
subscriber.subscribe_to(&"some topic")?;
relay.publish(&"some topic", &AnySerializableType)?;
let message = subscriber.receiver().recv_async().await?;
println!(
"Received message on topic {}: {:?}",
message.topic::<String>()?,
message.payload::<AnySerializableType>()?
);
Sync Example
let relay = Relay::default();
let subscriber = relay.create_subscriber();
subscriber.subscribe_to(&"some topic")?;
relay.publish(&"some topic", &AnySerializableType)?;
let message = subscriber.receiver().recv()?;
println!(
"Received message on topic {}: {:?}",
message.topic::<String>()?,
message.payload::<AnySerializableType>()?
);
Modules
- Flume
Structs
- A
PubSub
message. - Manages subscriptions and notifications for
PubSub
. - A subscriber for
Message
s published to subscribed topics.