NAT与C#stan.client的重新运输问题流媒体



我正在使用nats流服务器和stan.client作为客户端库。

我的用户可以长时间工作。有时它们大于默认的ACK等待时间(30秒)。因此,我尝试手动示意我的消息,这样做:

StanSubscriptionOptions sOpts = StanSubscriptionOptions.GetDefaultOptions();
    sOpts.ManualAcks = true;
    EventHandler<StanMsgHandlerArgs> msgHandler = (sender, args) =>
    {
        args.Message.Ack();
        Thread.Sleep(40000);
    };
    sOpts.DurableName = "my-durable";
    var s = c.Subscribe(subject, qGroup, sOpts, msgHandler);

我在工作之前设置了手册ACK,然后我将消息作为第一个动作。

在此代码中,订户对40秒进行了工作。如果我发送2条消息,第二封始终已重新拨动。

我的错误是什么?

收到的第一条消息将立即确认,因此不会感到不满。

如果将第二个消息传递到客户端库并在您的回调处理之前已到期,则NATS流服务器将重新计算。

有30秒的ackwait和40秒的延迟,这很可能发生。

我通过stansubscriptionOptions.AckWait解决了增加ackwait选项。

最新更新