问题标签 [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.
go - NATS Jetstream 是否通过密钥提供消息排序?
我是 NATS Jetstream 的新手,我一直在阅读他们的官方文档 ( https://docs.nats.io/jetstream/jetstream ) 以了解其概念并将其与 Kafka 进行比较。我拥有的主要用例之一是解决基于特定 id 的消息/事件排序(如partition key
Kafka 世界中的 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.1
、consumerGroup-2
消费来源ORDER.2
等等......
比如说,order-id
111 有 2 个订单更新事件,这将被映射到ORDER.1
流主题,并相应地consumerGroup-1
消耗这 2 个事件。但是在这个consumerGroup中,两个更新事件可以去到不同的消费者,如果其中一个消费者有点忙或有点慢,那么在整体层面上,订单更新事件消费可能不同步或乱序.
Kafka 使用分区键的概念解决了这个问题,因为消费者组的消费者被分配到特定的分区。因此,同一个 orderId 的所有事件都被同一个消费者消费,从而保持订单更新事件消费的顺序。如何在 Jetstream 中解决此问题?
java - NATS 流创建失败
当我尝试在本地 NATS 服务器上创建流时出现错误。连接建立成功,但jsm.addStream(conf)
请求中断。
我正在使用 Maven 工件:
方法连接:
称呼:
NATS 在 docker conainer 中运行localhost
:
但是当我调用端点时得到错误:
我的解决方案有什么问题?
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'.
kubernetes - Skaffold 没有完全运行所有服务
我正在开发这个虚拟项目并试图通过Skaffold
.
我的项目中有 3 个服务(分别在 ports和3001
上运行),通过.3002
3003
NATS server
问题是:每次运行时都会遇到不同类型的错误skaffold debug
,并且一个/多个服务不起作用。
有时,我没有收到任何错误,所有服务都按预期工作。以下是一些错误:
我很茫然,不能再帮助自己了。我希望这里有人能够帮助我。
提前致谢。
PS:以下是我机器的配置,以防是我机器的问题。
我使用 WSL2 (Debian) 并且docker-desktop
是 Kubernetes 的上下文。
java - Nats 流式消息传递
是否可以在Nats-Streaming中向多个侦听器发送消息?在这种情况下,两个侦听器都会收到消息,但只有其中一个会发送 ack。
有人告诉我,在Nats-Streaming中,消息只会发送给其中一个听众,而不会发送给其他听众。我无法在文档中找到答案。我知道在Nats(最多一次)中,您可以让多个听众收到相同的消息,但我不确定Nats-Streaming中是否是这种情况(至少一次)。
kubernetes - NATS 服务器在 Node.js 应用程序中给出 EAI_AGAIN 错误
我正在尝试在本地运行微服务(单节点机器)。我收到了这个奇怪的错误:
下面是配置:
我的应用程序建立在NestJS 框架之上。下面是main.ts
文件:
所有配置都在default
命名空间。请帮助我解决我做错了什么。这是我现在正在练习的项目。
编辑:回答第一条评论:
集群设置非常简单。我刚刚通过 Chocolatey包管理器安装了Docker Desktop并启用了 Kubernetes。以下是版本输出(截至2021 年 10 月 12 日):
python - NATS / JetStream 如何“记住”订阅者?
我正在使用 NATS 迈出第一步,并看到我无法理解的行为,即使在非常仔细地阅读了文档之后也是如此。我有一个本地 NATS 服务器(2.6.5)正在运行。它开始于
我使用以下代码生成一些消息:
如果我运行代码并执行,./nats stream ls
我会看到 10 条消息。到目前为止一切都很好。接下来我运行我的消费者:
输出显示:
这是有道理的:我拉了 10 条消息。每第三条消息都是“裸露的”,因此下一次调用会再次检索它。如果我再次启动脚本,输出是:
几秒钟后,我暂停了。显然 NATS 以某种方式记住了我的脚本并继续传递消息。但我不明白这是怎么发生的!?流中是否有“全局”光标?但在那种情况下,多个客户会干扰,这对我来说没有意义。所以我假设 NATS 以某种方式记住了我的客户。如何?我如何告诉 NATS 我要重新启动?我也很感激指向我显然错过的文档的指针!?
yaml - 设置 NATS 帐户解析器时出错 --> nats-server: 运营商不允许直接配置帐户
您好我正在尝试根据以下说明设置 NATS 帐户解析器: https ://artifacthub.io/packages/helm/nats/nats
这是我的配置:
我遗漏了用户和 jwt 信息
当我使用该配置启动 NATS 服务器时,出现以下错误: nats-server: 操作员不允许直接配置帐户
node.js - NatsError: stan: 连接请求超时 || 转发端口
我的 publisher.ts 文件:
我的端口转发命令:
我的 nats-test 文件夹中的发布命令:
我的 nats-depl.yaml 文件:
无法连接到 nats 客户端。
kubernetes - NATS Streamin 服务器 - 发布事件
我在谷歌云上有一个名为 blog-dev 的 kubernetes 集群,在 us-central1-c 区域中有 3 个 N1-g1 小实例。我通过以下方式配置了我的集群
- 键入命令“gcloud init”。选择账户、项目和地区
- 键入命令“gcloud container clusters get-credentials blog-dev”
- 输入命令'kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.3/deploy/static/provider/cloud/deploy.yaml'
- 转到 GCloud 中的负载均衡器部分并复制负载均衡器 ip
- 将条目 'load-balancer-ip' blog.dev 放入 hosts.ini 文件中。将负载均衡器 ip 替换为第 4 步中的 IP
- 输入命令'kubectl create secret generic jwt-secret --from-literal=JWT_KEY=asdf'
- 键入命令“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 的浏览器,它显示“页面未显示”。
请帮忙!!!