3个版本

0.3.3 2022年12月5日
0.3.2 2022年12月5日
0.3.1 2022年12月2日

7 #kinesis

每月下载量27次

MIT授权

21KB
389 代码行

Rust的Amazon Kinesis客户端库

crates-badge docs-badge Crates.io

此软件包提供了Amazon Kinesis客户端库(KCL)MultiLangDaemon的Rust接口,它是Java版本的Amazon KCL的一部分。

该接口管理与MultiLangDaemon的交互,以便开发者可以专注于实现他们的记录处理器可执行文件。

还提供了一个使用Python版本的Amazon KCL设置正确JAR的Docker镜像。

还需要一个设置文件,以便MultiLangDaemon可以正确设置您的处理器。该文件的示例可以在此处找到。

基本用法

更完整的示例可以在此处找到

use kcl::checkpointer::Checkpointer;
use kcl::reader::StdinReader;
use kcl::writer::StdoutWriter;
use kcl::{run, Processor, Record};
use serde::Deserialize;

#[derive(Deserialize)]
struct DummyPayload;
struct BaseApp;

impl Processor<StdoutWriter, StdinReader> for BaseApp {
    fn initialize(&mut self, _shard_id: &str) {}

    fn process_records(
        &mut self,
        data: &[Record],
        _checkpointer: &mut Checkpointer<StdoutWriter, StdinReader>,
    ) {
        for record in data {
            match record.json::<DummyPayload>() {
                Ok(data) => {}
                Err(e) => {}
            }
        }
    }
    fn lease_lost(&mut self) {}
    fn shard_ended(&mut self, _checkpointer: &mut Checkpointer<StdoutWriter, StdinReader>) {}
    fn shutdown_requested(&mut self, _checkpointer: &mut Checkpointer<StdoutWriter, StdinReader>) {}
}

fn main() {
    run(&mut BaseApp {});
}

Docker

此Docker镜像的示例消费者可以是

使用al2编译,因为amazoncoretto使用al2

FROM amazonlinux:2 as builder
RUN yum update -y && yum install -y gcc
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"
COPY . .
RUN cargo build --release

FROM ghcr.io/validus-risk-management/amazon-kinesis-client-rust:latest as runner
COPY my-configs/app.properties app.properties
COPY --from=builder target/release/my-app target/release/my-app

默认入口点应满足大多数要求

CMD ["java", "-cp", "/usr/local/lib/jars/*", "software.amazon.kinesis.multilang.MultiLangDaemon", "--properties-file", "app.properties"]

更多信息请参阅此处

依赖关系

~1.1-2MB
~42K SLoC