1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
要让服务跑起来,最快的方式是用 `cargo generate` 生成项目骨架。
```bash
cargo install cargo-generate
cargo generate --git https://github.com/powersemmi/ruststream templates/memory --name my-service
cd my-service
```
生成骨架只需要 `cargo generate`。`templates/memory` 是基于内存 Broker 的起步模板。自带模板的 Broker
crate 用同样的方式生成,指明该 crate 的仓库和模板路径(例如
`--git https://github.com/powersemmi/ruststream-nats templates/nats`);某个 Broker 有哪些模板,
以它自己的文档为准。`cargo generate` 会生成一个符合 Rust 习惯的多文件项目:
```
my-service/
├── Cargo.toml
└── src/
```
`#[ruststream::app]` 会生成 `main`,因此二进制程序已经支持框架的命令:
```bash
cargo run -- run # 或者:装了 CLI 之后用 ruststream run
```
`cargo run -- run` 会启动 tokio 运行时。服务会一直运行,直到你按下
++ctrl+c++。运行服务不需要外部 Broker。
```bash
cargo run -- asyncapi gen
```
该命令以 JSON 格式打印 AsyncAPI 文档。输出选项(`-o`、`--yaml`)和文档本身,参见
[`asyncapi` 模块](https://docs.rs/ruststream/latest/ruststream/asyncapi/index.html)。
=== "宏"
=== "手写"
你写的是一个构建服务的函数,`#[ruststream::app]` 把它变成 `main`。
- --