2 个版本

0.1.1 2022年8月14日
0.1.0 2022年6月16日

#11 in #event-streaming

Apache-2.0 协议

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