需要使用异步运行时库 actix 或 async-std 建立一个异步本地运行时,然后把 AWS Kinesis Rust SDK 的网络 I/O 绑定到这个异步本地运行时上。具体操作示例如下:
使用 actix:
use actix::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box> {
let sys = actix_rt::System::new();
let stream_name = "my-stream-name".to_string();
let shard_id = "shardId-000000000000".to_string();
let worker_name = "my-worker-name".to_string();
let kinesis_client = KinesisClient::from_env();
let mut worker = WorkerBuilder::new(kinesis_client, stream_name, shard_id, worker_name)
.build::()?;
worker.run().await?;
Ok(())
}
使用 async-std:
use async_std::task;
fn main() -> Result<(), Box> {
task::block_on(async {
let stream_name = "my-stream-name".to_string();
let shard_id = "shardId-000000000000".to_string();
let worker_name = "my-worker-name".to_string();
let kinesis_client = KinesisClient::from_env();
let mut worker = WorkerBuilder::new(kinesis_client, stream_name, shard_id, worker_name)
.build::()?;
worker.run().await?;
Ok(())
})
}
以上示例中,我们首先使用 actix 或 async-std 建立了一个异步本地运行时,然后将 AWS Kinesis Rust SDK 的网络 I/O 绑定到这个异步本地运行时上。接着,我们创建了一个 Worker 并在该 Worker 上运行我们自己的业务代码 SampleProcessor。最后,我们使用 async/await 语法让该 Worker 开始运行。这样就可以利用异步运行时库解决 AWS Kinesis Rust SDK 与 Tokio Runtime