重连尝试期间的消息缓冲
Core NATS 客户端库会尽可能实现即发即弃的语义。你应该使用 JetStream 功能来获得更高级的服务质量,从而处理因服务器连接中断而导致的 Core NATS 消息被丢弃的情况。话虽如此,你正在使用的客户端库可能包含的一项功能是:在连接断开时能够缓冲外发的消息。
在短暂的重连期间,客户端可以允许应用程序发布消息。但由于服务器离线,这些消息会被缓存在客户端中。一旦重新连接,客户端库就会发送这些消息。当达到最大重连缓冲区容量时,客户端将无法再发布消息,并会返回错误。
请注意,虽然从应用程序的角度看消息似乎已经发送,但由于连接可能始终无法重新建立,这些消息有可能永远无法真正发出。你的应用程序应该使用 ACK 等模式,或者使用 JetStream publish 调用来确保消息投递。
对于支持此功能的客户端,你可以通过字节数、消息数或两者结合的方式来设定此缓冲区的大小。
{% tabs %} {% tab title="Go" %}
{% endtab %}
{% tab title="Java" %}
{% endtab %}
{% tab title="JavaScript" %}
{% endtab %}
{% tab title="Python" %}
{% endtab %}
{% tab title="C#" %}
{% endtab %}
{% tab title="Ruby" %}
{% endtab %}
{% tab title="C" %}
{% endtab %} {% endtabs %}
如本文档所述,每个客户端库的行为可能略有不同。请查阅您正在使用的库的文档。
