问题标签 [nats-streaming-server]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1008 浏览

go - NATS Jetstream 是否通过密钥提供消息排序?

我是 NATS Jetstream 的新手,我一直在阅读他们的官方文档 ( https://docs.nats.io/jetstream/jetstream ) 以了解其概念并将其与 Kafka 进行比较。我拥有的主要用例之一是解决基于特定 id 的消息/事件排序(如partition keyKafka 世界中的 a )。

例如,一个实体有几个更新事件,我的系统需要以相同的顺序Order使用特定的事件。Order在这种情况下,我会order-id在发布到 Kafka 主题时将其用作分区键。我如何在 Jetstream 中做到这一点?

我在 Jetstream 中遇到过重复数据删除键 ( Nats-Msg-Id),但我认为此功能更类似于 Kafka 中的主题压缩。我对吗?

尽管如此,我还是用 Golang 编写了以下代码进行发布:

我这样做对吗?特定 orderId 的所有订单是否会转到 Jetstream 世界中消费者组内的同一消费者,从而保持顺序?

编辑 1

这是我从@tbeets 的建议中得到的。例如,我预定义了 10 个流主题,例如ORDER.1, ORDER.2, ORDER.3....ORDER.10

在发布方面,我可以order-id%10+1找到我想要发布的确切流主题。所以在这里,我们已经实现了相同 orderId 的所有更新事件每次都将转到相同的流主题。

现在,在订阅者方面,我有 10 个消费者组(每个消费者组中有 10 个消费者),每个消费者都从一个特定的流主题中消费,比如consumerGroup-1从消费来源ORDER.1consumerGroup-2消费来源ORDER.2等等......

比如说,order-id111 有 2 个订单更新事件,这将被映射到ORDER.1流主题,并相应地consumerGroup-1消耗这 2 个事件。但是在这个consumerGroup中,两个更新事件可以去到不同的消费者,如果其中一个消费者有点忙或有点慢,那么在整体层面上,订单更新事件消费可能不同步或乱序.

Kafka 使用分区键的概念解决了这个问题,因为消费者组的消费者被分配到特定的分区。因此,同一个 orderId 的所有事件都被同一个消费者消费,从而保持订单更新事件消费的顺序。如何在 Jetstream 中解决此问题?

0 投票
2 回答
265 浏览

java - NATS 流创建失败

当我尝试在本地 NATS 服务器上创建流时出现错误。连接建立成功,但jsm.addStream(conf)请求中断。

我正在使用 Maven 工件:

方法连接:

称呼:

NATS 在 docker conainer 中运行localhost

但是当我调用端点时得到错误:

我的解决方案有什么问题?

0 投票
1 回答
39 浏览

nats.io - 如何使用 nats-pub.py 脚本将令牌传递给 NATS 服务器

我是 NATS 的新手。
请您提供如何使用 nats-pub.py 脚本将令牌传递给 NATS 服务器。
python /tmp/nats-pub.py --creds ? -s nats://eventbus-default-stan-svc:4222 {label} -d '{json}'
我可以获得 NATS 访问配置

如何配置请求以通过授权,因为现在我得到了Error: nats: 'Authorization Violation'.

0 投票
3 回答
365 浏览

kubernetes - Skaffold 没有完全运行所有服务

我正在开发这个虚拟项目并试图通过Skaffold.

我的项目中有 3 个服务(分别在 ports和3001上运行),通过.30023003NATS server

问题是:每次运行时都会遇到不同类型的错误skaffold debug,并且一个/多个服务不起作用。

有时,我没有收到任何错误,所有服务都按预期工作。以下是一些错误:

我很茫然,不能再帮助自己了。我希望这里有人能够帮助我。

提前致谢。

PS:以下是我机器的配置,以防是我机器的问题。

我使用 WSL2 (Debian) 并且docker-desktop是 Kubernetes 的上下文。

0 投票
0 回答
55 浏览

java - Nats 流式消息传递

是否可以在Nats-Streaming中向多个侦听器发送消息?在这种情况下,两个侦听器都会收到消息,但只有其中一个会发送 ack。

有人告诉我,在Nats-Streaming中,消息只会发送给其中一个听众,而不会发送给其他听众。我无法在文档中找到答案。我知道在Nats(最多一次)中,您可以让多个听众收到相同的消息,但我不确定Nats-Streaming中是否是这种情况(至少一次)。

0 投票
0 回答
137 浏览

kubernetes - NATS 服务器在 Node.js 应用程序中给出 EAI_AGAIN 错误

我正在尝试在本地运行微服务(单节点机器)。我收到了这个奇怪的错误:

下面是配置:

我的应用程序建立在NestJS 框架之上。下面是main.ts文件:

所有配置都在default命名空间。请帮助我解决我做错了什么。是我现在正在练习的项目。

编辑:回答第一条评论:

集群设置非常简单。我刚刚通过 Chocolatey包管理器安装了Docker Desktop并启用了 Kubernetes。以下是版本输出(截至2021 年 10 月 12 日):

0 投票
1 回答
357 浏览

python - NATS / JetStream 如何“记住”订阅者?

我正在使用 NATS 迈出第一步,并看到我无法理解的行为,即使在非常仔细地阅读了文档之后也是如此。我有一个本地 NATS 服务器(2.6.5)正在运行。它开始于

我使用以下代码生成一些消息:

如果我运行代码并执行,./nats stream ls我会看到 10 条消息。到目前为止一切都很好。接下来我运行我的消费者:

输出显示:

这是有道理的:我拉了 10 条消息。每第三条消息都是“裸露的”,因此下一次调用会再次检索它。如果我再次启动脚本,输出是:

几秒钟后,我暂停了。显然 NATS 以某种方式记住了我的脚本并继续传递消息。但我不明白这是怎么发生的!?流中是否有“全局”光标?但在那种情况下,多个客户会干扰,这对我来说没有意义。所以我假设 NATS 以某种方式记住了我的客户。如何?我如何告诉 NATS 我要重新启动?我也很感激指向我显然错过的文档的指针!?

0 投票
0 回答
67 浏览

yaml - 设置 NATS 帐户解析器时出错 --> nats-server: 运营商不允许直接配置帐户

您好我正在尝试根据以下说明设置 NATS 帐户解析器: https ://artifacthub.io/packages/helm/nats/nats

这是我的配置:

我遗漏了用户和 jwt 信息

当我使用该配置启动 NATS 服务器时,出现以下错误: nats-server: 操作员不允许直接配置帐户

0 投票
1 回答
87 浏览

node.js - NatsError: stan: 连接请求超时 || 转发端口

我的 publisher.ts 文件:

我的端口转发命令:

我的 nats-test 文件夹中的发布命令:

我的 nats-depl.yaml 文件:

无法连接到 nats 客户端。

0 投票
0 回答
21 浏览

kubernetes - NATS Streamin 服务器 - 发布事件

我在谷歌云上有一个名为 blog-dev 的 kubernetes 集群,在 us-central1-c 区域中有 3 个 N1-g1 小实例。我通过以下方式配置了我的集群

  1. 键入命令“gcloud init”。选择账户、项目和地区
  2. 键入命令“gcloud container clusters get-credentials blog-dev”
  3. 输入命令'kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.3/deploy/static/provider/cloud/deploy.yaml'
  4. 转到 GCloud 中的负载均衡器部分并复制负载均衡器 ip
  5. 将条目 'load-balancer-ip' blog.dev 放入 hosts.ini 文件中。将负载均衡器 ip 替换为第 4 步中的 IP
  6. 输入命令'kubectl create secret generic jwt-secret --from-literal=JWT_KEY=asdf'
  7. 键入命令“skaffold dev”。为此所需的文件可以在下面找到

Nats 部署

入口 yaml

Skaffold.yaml

我在 nats-test/src 中创建了一个 publisher.ts

我已经使用脚本部分中显示的条目更新了 package.json

当我运行“npm run publish”时,出现如下所示的错误

NATS 监控页面可以从谷歌云网络预览中看到,并且 URL 是https://8222-cs-131594183002-default.cs-asia-southeast1-ajrg.cloudshell.dev/?authuser=1但是当我尝试从使用 http://nats-srv:8222 的浏览器,它显示“页面未显示”。

请帮忙!!!