Simple-pub-sub
A simple message broker implemented in rust.
The message frame looks like
| header |
version |
pkt type |
topic length |
message length |
padding |
topic |
message |
| 1 byte |
2 bytes |
1 byte |
1 byte |
2 bytes |
1 byte |
..... |
..... |
So it's a 8 byte header followed by the topic and message.
Cli Usage
simple-pub-sub server 0.0.0.0 6480 --log-level trace
-
Client:
simple-pub-sub client 0.0.0.0 6480 subscribe the_topic --log-level trace
simple-pub-sub client 0.0.0.0 6480 publish the_topic the_message --log-level info
simple-pub-sub client 0.0.0.0 6480 query the_topic --log-level trace
API Usage
To subscribe
use simple_pub_sub;
pub fn on_msg(topic: String, message: Vec<u8>) {
println!("topic: {} message: {:?}", topic, message)
}
#[tokio::main]
async fn main() -> Result<(), String> {
let mut client = simple_pub_sub::client::Client::new("localhost".to_string(), 6480);
client.on_message(on_msg);
let _ = client.connect().await;
let _ = client.subscribe("abc".to_string()).await;
Ok(())
}