首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nats jetstream的意外回复

使用nats jetstream的意外回复
EN

Stack Overflow用户
提问于 2021-12-08 11:08:20
回答 1查看 476关注 0票数 2

我正在使用Nats JetStream来实现请求应答功能。这一切都很好,除了次要的细节,我得到了一个非常奇怪的答复。回复消息中的数据完全不是我从回复端发送的数据。

这也可以使用nats cli进行复制,这意味着发送或接收消息的代码不是问题所在。但是,问题可能在于我创建流的方式,因为在没有流的情况下使用nats可以很好地工作。

这是我的流配置,我去:

代码语言:javascript
复制
var Read = &nats.StreamConfig{
    Name:        "read",
    Description: "Read Stream",
    Subjects: []string{
        "read.things",
    },
    Retention:    nats.LimitsPolicy,
    MaxConsumers: -1,
    MaxMsgs:      -1,
    MaxBytes:     -1,
    Discard:      nats.DiscardOld,
    MaxAge:       0,
    MaxMsgSize:   -1,
    Storage:      nats.FileStorage,
    Replicas:     0,
    NoAck:        false,
    Duplicates:   2 * time.Minute,
}

我把它创造成这样:

代码语言:javascript
复制
_, err = jetStream.AddStream(streams.Read)

为了再现这个问题,我首先使用nats cli设置了一个侦听器:

nats reply 'read.things' "Hello there"

然后我发出请求:

代码语言:javascript
复制
nats request read.things
Hi
[Ctrl+D]

我明白了:

代码语言:javascript
复制
12:01:08 Reading payload from STDIN
hi?
12:01:12 Sending request on "read.things"
12:01:12 Received on "_INBOX.91kMP9XDsFLK09g690N97Z.zTJsXJxE" rtt 19.422916ms
{"stream":"read", "seq":1}

正如您所看到的,当我期望得到{"stream":"read", "seq":1}时,我会把它拿回来:Hello there。为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2021-12-08 13:03:29

我从nats slack (https://natsio.slack.com)那里得到了这个答复:

"JetStream不是用于请求应答,而是用于解除耦合的工作负载。如果您想要耦合请求-回复,则不需要持久性。

你看到的是溪流上的回复:“是的,收到你的信息了”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70274001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档