0

我是新的 NATS。我只是尝试使用 NATS-streaming-server 示例发送和接收文本文件。

当我发送一个文本文件(~9B)时,它可以工作


-Pub 连接到集群 'test-cluster' 作为客户端 'cs-publisher'。在主题 foo Url 上发布 1 条消息:nats://localhost:4222 有效负载为 9 个字节。在 0.0076917 秒(130 条消息/秒)内发布了 1 条带有确认的消息。

-Sub 作为客户端“cs-subscriber”连接到集群“test-cluster”。在主题 foo url 上接收 1 条消息:nats://localhost:4222 在 6E-07 秒内收到 1 条消息(1666666 条消息/秒)。


但是,当我发送一个文本文件(~80MB)时,订阅不起作用。


-Pub 作为客户端“cs-publisher”连接到集群“test-cluster”。在主题 foo Url 上发布 1 条消息:nats://localhost:4222 有效负载为 77552640 字节。在 1.2574163 秒(0 条消息/秒)内发布了 1 条带有确认的消息。

-Sub 作为客户端“cs-subscriber”连接到集群“test-cluster”。在主题 foo url 上接收 1 条消息:nats://loaclhost:4222


我不知道为什么订阅没有反应。我使用了相同的代码,只是更改了我发送的文件。

byte[] 有效载荷 = File.ReadAllBytes("test.txt");

……

字符串 guid = c.Publish(主题,有效负载,(obj,pubArgs)=>

请帮我

4

1 回答 1

0

问题是 NATS 只支持最大 1 MB 的消息。 https://nats-io.github.io/docs/faq.html#is-there-a-message-size-limitation-in-nats

您有 2 个解决问题的方法:

  1. 使用对象存储在其中存储大量数据并在消息中传输引用。
  2. 将您的消息分成多条消息。尽管我在这里会非常小心,因为您不能保证订购,并且消息可能最终(如果它们最终)在不同的订阅者上。因此,这将完全质疑 NATS 的使用。
于 2019-08-23T11:05:33.560 回答