#stateful #sdk #apache #flink #function #effect #html

已撤回 statefun-sdk

Apache Flink Stateful Functions (StateFun)项目的Rust SDK。请参阅:https://flink.apache.org/stateful-functions.html

0.1.0 2020年7月5日

#19 in #flink

MIT许可证

36KB
601 代码行

Statefun Rust SDK

用于在Rust中编写状态函数的SDK。有关项目更多信息,请参阅Apache Flink Stateful Functions网站。

目前这个项目非常基础。我刚刚开始,还没有测试,可能还有一些错误。


lib.rs:

用于在Rust中编写"状态函数"的SDK。用于与Apache Flink Stateful Functions (Statefun)一起使用。

示例

以下展示了如何编写一个简单的状态函数并使其在Statefun部署中使用。

use protobuf::well_known_types::StringValue;

use statefun_sdk::io::kafka;
use statefun_sdk::transport::hyper::HyperHttpTransport;
use statefun_sdk::transport::Transport;
use statefun_sdk::{Address, Context, Effects, EgressIdentifier, FunctionRegistry, FunctionType};

let mut function_registry = FunctionRegistry::new();

function_registry.register_fn(
    FunctionType::new("example", "function1"),
    |context, message: StringValue| {
        let mut effects = Effects::new();

        effects.send(
            Address::new(FunctionType::new("example", "function2"), "doctor"),
            message,
        );

        effects
    },
);

let hyper_transport = HyperHttpTransport::new("0.0.0.0:5000".parse()?);
hyper_transport.run(function_registry)?;

该程序创建了一个FunctionRegistry,可以用于注册一个或多个函数。然后我们将闭包注册为一个状态函数。最后,我们需要创建一个Transport,在这种情况下是HyperHttpTransport来为我们提供状态函数。

请注意,您也可以在注册函数时使用函数而不是闭包。

请参阅状态函数的文档以了解如何在部署中使用它。特别是模块文档非常相关。

依赖项

~14MB
~229K SLoC