如果你正在运行本地的 nats-server,请先停止它,并使用 nats-server -js 命令启用 JetStream 重新启动(如果尚未启用)。
然后你可以通过以下命令检查 JetStream 是否已启用:
nats account info输出应类似于:
Connection Information:
Client ID: 6
Client IP: 127.0.0.1
RTT: 64.996µs
Headers Supported: true
Maximum Payload: 1.0 MiB
Connected URL: nats://127.0.0.1:4222
Connected Address: 127.0.0.1:4222
Connected Server ID: ND2XVDA4Q363JOIFKJTPZW3ZKZCANH7NJI4EJMFSSPTRXDBFG4M4C34K
JetStream Account Information:
Memory: 0 B of Unlimited
Storage: 0 B of Unlimited
Streams: 0 of Unlimited
Consumers: 0 of Unlimited
如果你看到如下内容,则表示 JetStream 尚未启用:
JetStream Account Information:
JetStream is not supported in this account
就像你需要创建流后才能使用它们一样,你也需要先创建一个对象存储桶。
nats object add myobjbucket输出应类似于:
myobjbucket Object Store Status
Bucket Name: myobjbucket
Replicas: 1
TTL: unlimitd
Sealed: false
Size: 0 B
Backing Store Kind: JetStream
JetStream Stream: OBJ_myobjbucket
nats object put myobjbucket ~/Movies/NATS-logo.mov1.5 GiB / 1.5 GiB [====================================================================================]
Object information for myobjbucket > /Users/jnmoyne/Movies/NATS-logo.mov
Size: 1.5 GiB
Modification Time: 14 Apr 22 00:34 +0000
Chunks: 12,656
Digest: sha-256 8ee0679dd1462de393d81a3032d71f43d2bc89c0c8a557687cfe2787e926
默认情况下,完整文件路径会被用作键。你可以通过 --name 参数显式指定键(例如相对路径)。
nats object put --name /Movies/NATS-logo.mov myobjbucket ~/Movies/NATS-logo.mov1.5 GiB / 1.5 GiB [====================================================================================]
Object information for myobjbucket > /Movies/NATS-logo.mov
Size: 1.5 GiB
Modification Time: 14 Apr 22 00:34 +0000
Chunks: 12,656
Digest: sha-256 8ee0679dd1462de393d81a3032d71f43d2bc89c0c8a557687cfe2787e926
nats object ls myobjbucket╭───────────────────────────────────────────────────────────────────────────╮
│ Bucket Contents │
├─────────────────────────────────────┬─────────┬───────────────────────────┤
│ Name │ Size │ Time │
├─────────────────────────────────────┼─────────┼───────────────────────────┤
│ /Users/jnmoyne/Movies/NATS-logo.mov │ 1.5 GiB │ 2022-04-13T17:34:55-07:00 │
│ /Movies/NATS-logo.mov │ 1.5 GiB │ 2022-04-13T17:35:41-07:00 │
╰─────────────────────────────────────┴─────────┴───────────────────────────╯
nats object get myobjbucket ~/Movies/NATS-logo.mov1.5 GiB / 1.5 GiB [====================================================================================]
Wrote: 1.5 GiB to /Users/jnmoyne/NATS-logo.mov in 5.68s average 279 MiB/s
默认情况下,文件将根据其名称(而非完整路径)存储在本地路径下。要指定输出路径,请使用 --output 参数。
nats object get myobjbucket --output /temp/Movies/NATS-logo.mov /Movies/NATS-logo.mov1.5 GiB / 1.5 GiB [====================================================================================]
Wrote: 1.5 GiB to /temp/Movies/NATS-logo.mov in 5.68s average 279 MiB/s
nats object rm myobjbucket ~/Movies/NATS-logo.mov? Delete 1.5 GiB byte file myobjbucket > /Users/jnmoyne/Movies/NATS-logo.mov? Yes
Removed myobjbucket > /Users/jnmoyne/Movies/NATS-logo.mov
myobjbucket Object Store Status
Bucket Name: myobjbucket
Replicas: 1
TTL: unlimitd
Sealed: false
Size: 16 MiB
Backing Store Kind: JetStream
JetStream Stream: OBJ_myobjbucket
nats object info myobjbucketmyobjbucket Object Store Status
Bucket Name: myobjbucket
Replicas: 1
TTL: unlimitd
Sealed: false
Size: 1.6 GiB
Backing Store Kind: JetStream
JetStream Stream: OBJ_myobjbucket
nats object watch myobjbucket[2022-04-13 17:51:28] PUT myobjbucket > /Users/jnmoyne/Movies/NATS-logo.mov: 1.5 GiB bytes in 12,656 chunks
[2022-04-13 17:53:27] DEL myobjbucket > /Users/jnmoyne/Movies/NATS-logo.mov
你可以封闭存储桶,这意味着不允许对该存储桶进行进一步的更改。
nats object seal myobjbucket? Really seal Bucket myobjbucket, sealed buckets can not be unsealed or modified Yes
myobjbucket has been sealed
myobjbucket Object Store Status
Bucket Name: myobjbucket
Replicas: 1
TTL: unlimitd
Sealed: true
Size: 1.6 GiB
Backing Store Kind: JetStream
JetStream Stream: OBJ_myobjbucket
使用 nats object rm myobjbucket 命令将删除存储桶及其所有存储的文件。