问题标签 [nats.io]
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.
publish-subscribe - NATS 请求回复 - 它是如何工作的?
我是新的 NATS。不确定 NATS 请求回复的工作原理。
据我了解,这种模式可用于双向通信,但问题是,它是否适用于相同的消息 ID/线程?如果不是,我们不能为同一目的使用两个不同的队列吗?它与 NATS 的 pub-sub 或 queue 模式有何不同?
有人可以提供更多的用例吗?
谢谢。
database - 使用 NATS 流服务器作为物联网位置数据的主要数据存储?
我有一个 Mosquitto 代理,它从远程设备接收定位信息。
我需要将这些数据存储在某个地方以供其他微服务处理。
目前有一个Node.js进程订阅broker,批量写入Postgres数据库。
但我看到的问题是,现在需要处理此位置数据的任何其他服务都需要查询 Postgres 数据库。
约束:这适用于本地部署,因此理想情况下我们希望尽可能少地维护。一个带有数据库的虚拟机,可能还有一个指向客户维护的数据库的链接。
作为传感器数据真实来源的数据库的替代方案是类似于 Kafka 的事件日志/事件源方法。然后将有一个代理订阅者,所有微服务都可以从中读取,并在出现故障时从中断的地方继续。
因为它是内部部署的,所以我想要比 Kafka 更轻量级的东西,并且找到了 NATS Streaming Server。
现在,可以通过配置数据存储来持久化 NATS 事件日志。它目前支持简单文件存储和 SQL 存储。
现在,如果我使用 SQL 存储,将原始消息存储到数据库、从数据库读取然后再次存储它们似乎是浪费时间,而且对性能不利。SQL 存储接口也实现了自己的批处理。我不确定我对文件存储作为事实来源的信任程度。
那么,这是一种可行的方法吗?
zeromq - 是否可以在 ZeroMQ 中使用主题?
我有一个实现NATS 队列
的小项目
这是代码:
如您所见,有 2 个服务 - serviceA
on queueA
和serviceB
on queueB
以及 2 个客户端:第一个调用服务 A,第二个调用服务 B
NATS 实现 Subject ('serviceA'
和'serviceB'
)
现在,我想尝试使用 ØMQ 转换示例 我发现使用 ZeroMQ 的类似示例
但我在主题上找不到任何样本。
或许ØMQROUTER
用来实现一个主题
您能帮我将主题实现到 ZeroMQ 示例中吗?
nats.io - NATS 发布/订阅确认
在过去的几天里,我一直在用 NATS 和 NATS 流服务器做一些 POC。我从 NATS 流服务器开始,为相同的 Java 客户端编写了一个 Java 客户端,并向/从 NATS 流服务器发布/订阅消息,与 NATS 服务器一起集群。NATS-streaming 非常简洁,guids
当流媒体服务器收到来自发布者的消息时提供确认。我通过注册一个AckHandler
并像这样使用它来实现这一点:
但是,当我开始查看 NATS 服务器(不是流式传输)时,我找不到任何这样的 AckHandler(或其他任何东西)可以向我提供确认guid
消息已成功发布。
NATS 流服务器有很多我正在寻找的内置功能 - 例如,message acknowledgements
(max_age
消息的 TTL)durable subscriptions
等。但它缺乏当前最新版本的集群功能。另一方面,NATS 服务器提供了集群功能,但我找不到 NATS-streaming 提供的其他功能(除非我在文档中错过了它)。
我知道有一个未解决的问题是要在单个表中列出 NATS 与 NATS 流功能,以供参考,但目前还没有完成。
当消息发布到 NATS 服务器时,NATS 服务器是否提供确认?还是确认其中一个订阅者订阅了一条消息?
node.js - Node.js,带有 nats 的 ws-tcp-relay:连接错误
请帮忙解决问题:
当我启动 nats 服务器监听 4222 port:
./gnatsd --addr localhost --port 4222
,然后
./ws-tcp-relay localhost:4222 -p 4223
尝试使用 websocket-nats 通过 websockets 连接(例如在 service.js 中):
我收到此错误:
但是,如果我尝试使用 tcp 客户端端口 4222 直接连接到 nats,则连接建立成功:
redis - NATS 丢弃队列数据
我正在探索NATS进行排队,目前我正在使用 redis lists
。我陷入了以下场景,这在 redis 中很容易管理:
1)有一个守护进程推送队列中的值,一个守护进程不断从队列中读取。如果我的阅读守护程序停止,redis 开始将数据存储在 queue 中。一旦我开始读取守护程序,它就会从最后一个值弹出,它像 FIFO 一样停止。在这种情况下,没有机会丢失我的数据。NATS是否提供相同的规定?
2)如果我的 redis 服务器出现故障,我可以检索队列中已经可用的数据(留下少量数据)。如果 NATS 服务器出现故障,我可以检索我的数据吗?
nats.io - 了解 NATS 集群
NATS 服务器集群部分指出:
请注意,NATS 集群服务器的转发限制为一跳。这意味着每个 gnatsd 实例只会将它从客户端接收到的消息转发到它具有路由的紧邻的 gnatsd 实例。从路由接收到的消息只会分发给本地客户端。因此,建议 NATS 使用完整的网格集群或完整的图形,以按预期和文档中描述的那样运行。
假设我有一个由 3 个节点组成的 NATS 集群:A -> B -> C(->
表示路由)。请让我知道在以下情况下 NATS 客户端会发生什么:
- 发送到节点 A 的消息
- 节点 A 在将消息传递给节点 B 之前突然终止
提前致谢
php - PHP NATS 客户端在一些空闲时间后断开连接
我一直在使用这个库repejota/phpnats来开发一个可以订阅特定频道的 NATS 客户端。但是在连接后,收到少量消息并有大约 30 秒的空闲时间,它会自行断开连接而没有任何中断。但是,我的 Node.js 客户端在相同的 NATS 服务器上运行良好。
这是我订阅的方式...
任何建议/帮助???
谢谢!
python-asyncio - 断开连接时 NATS 不会引发异常
我使用了一个在 python asyncio 上使用 NATS 的几乎标准示例。我想接收一条消息,对其进行处理,然后将结果发送回队列,但是当 NATS 断开连接(例如重新启动 gnats)时,不会引发异常。我什至确实等待asyncio.sleep (1, loop = loop)
更改上下文并抛出了断开->重新连接异常,但这并没有发生。我究竟做错了什么?可能是一个错误?
message-queue - NATS - 只有一个订阅者对微服务架构中的已发布事件采取行动
我是 NATS 的新手,并且已阅读以下所有示例: https ://nats.io/documentation/concepts/nats-messaging/
我在 Microservciearchitecture 中,在微服务 Y(MSY)中需要存储从其他微服务 X(MSX)发布的一些信息我有 2-10 个 MSY 实例,所以当在 MSX 和 MSX 实例中进行更改时,我想要发布事件只有 1 个 MSY 实例应保存信息,因此并非所有实例都保存相同的数据。我已阅读 Request-Repy: https ://nats.io/documentation/concepts/nats-req-rep/ 但似乎所有实例都收到消息(并将处理它),即使它是点对点的并且仅针对最快回复的一个实例处理回复
这是正确的还是我误解了例子?如果我只需要 1 个 MSY 实例来处理给定的消息(将数据存储在 db 中),我该怎么做才能做到这一点?