2 个版本
0.1.1 | 2022年8月14日 |
---|---|
0.1.0 | 2022年6月16日 |
#11 in #event-streaming
55KB
1K SLoC
LucidMQ
此子目录包含 LucidMQ 的库代码。LucidMQ 是一个库,可以直接在您的应用程序中以无代理的方式实现事件流。没有外部进程运行,只需导入 LucidMQ 并开始将消息传递到也使用 LucidMQ 的不同应用程序。
基本用法
LucidMQ 暴露了 4 个主要组件
-
LucidMQ:处理所有主题的元数据和消费者、生产者的初始化。
-
生产者:给定一个主题,生产者将持久化消息写入该主题。
-
消费者:给定一个主题,消费者将从这个主题读取消息。它将知道其最后读取的偏移量,该偏移量已持久化。所有消费者都从最老的偏移量开始。
-
消息:类似于 Kafka,所有消息都使用键、值和时间戳格式。
use lucidmq::{LucidMQ, Message};
// Create our lucidmq instance
let mut lucidmq = LucidMQ::new("base_directory".to_string(), 1000, 5000);
// Let's produce message to our message queue
let mut producer = lucidmq.new_producer("topic1".to_string());
// Create a message that you want to send.
// Every message has a key, value and timestamp.
let key = format!("key{}", 1);
let value = format!("value{}", 1);
let message = Message::new(key.as_bytes(), value.as_bytes(), None);
producer.produce_message(message);
// Let's create a consumer to consumer our messages
let mut consumer = lucidmq.new_consumer("topic1".to_string());
// Get all the messages for that polling period
let records = consumer.poll(1000);
// Print out all of the messages recieved.
for record in records {
println!("{}", str::from_utf8(&record.key).unwrap());
println!("{}", str::from_utf8(&record.value).unwrap());
println!("{}", record.timestamp);
}
依赖关系
~0.9–1.6MB
~35K SLoC