#future #microservices #grpc #zeebe

zeebest

未来非官方的 zeebe 客户端!

3 个不稳定版本

0.20.0 2019 年 9 月 22 日
0.18.1 2019 年 6 月 18 日
0.18.0 2019 年 6 月 11 日

#703 in 异步

每月 24 次下载

MIT 许可证

270KB
6K SLoC

zeebest 客户端 docs.rs CircleCI

这是一个非官方的 Rust 客户端,用于 zeebe。Zeebe 是一个用于微服务的酷炫工作流协调器。通过启动本地 zeebe 代理并使用以下命令部署工作流来开始:

cargo运行 --zeebest --示例deploy_workflow

API

此包提供了一个单一的 Client 类型,它包含大量与 zeebe 网关交互的方法。

大多数方法都是标准的 zeebe 操作。与其它方法相比,worker 方法更有趣。

工人可以通过处理器激活和处理作业。工人有一个最大并发作业数。工人将尽力只从代理请求最多数量的作业。每个作业处理器可以完成或失败一个作业。

目前工人只能手动轮询网关,因此您需要使用另一个系统定期处理作业。 tokio::Interval 在此方面做得相当不错。

let mut client = Client::new("127.0.0.1", 26500).unwrap();

let handler = move |activated_job| { 
    Ok(JobResult::Complete { variables: None })
};

let mut worker = zeebest::JobWorker::new(
    "rusty-worker".to_string(),
    "payment-service".to_string(),
    Duration::from_secs(10).as_secs() as _,
    2, // max number of concurrent jobs
    PanicOption::FailJobOnPanic,
    client,
    handler,
);

// returns a stream of job results
let job_stream = worker.activate_and_process_job();

请参阅如何使用客户端的个别示例,或查看 完整的订单处理应用示例,该示例使用了许多客户端 API。

未来

与某些其他 zeebe 客户端不同,此客户端是 futures 首选的。所有方法都返回 futures 或 streams。必须在 futures 运行时(如 tokio)上执行 futures 才能发生任何事情。

此包没有提供良好的开箱即用的运行时解决方案,因此您可能需要依赖 tokio 或您喜欢的 futures 运行时。

异步

此包现在支持 futures 0.3 (std::future)。此包不使用 async-await 语法,因为它需要在稳定 Rust 中构建。但由于一切都是 futures 0.3,因此 zeebest 可以在 nightly Rust 项目中使用 async-await。

Zeebe 版本

此crate将尝试与zeebe一起发布。这个库通过网关protobuf文件与zeebe耦合。此服务合同可能在小补丁之间变化,我相信如果此crate的次要版本与zeebe匹配,则此crate将最容易使用。

当zeebe稳定到1.0.0时,这可能不太重要。在此期间,使用与您的zeebe版本的小补丁版本相匹配的zeebest版本,例如0.18.x。

开发中

确保protoc在您的路径中。在此安装protobuf。许多示例需要运行本地zeebe代理。可以使用zeebe docker-compose项目轻松启动代理。

贡献?

提出一个问题并开始讨论!或者只是提交PR!你可能比我更了解这个。

贡献者

此项目使用由zeebe提供的protobuf文件,该文件采用Apache 2.0许可证。许可证包含在protobuf文件中。

这很大程度上受到了zeebe发布的python指南zeebe-client-node-js的影响,因为javascript很棒,以及java客户端的完整性。

依赖项

~12MB
~202K SLoC