【发布时间】:2019-08-09 23:13:26
【问题描述】:
我使用nats streaming server 和stan.client 作为客户端库。
我的订阅者可以做长时间的工作。有时它们大于默认的确认等待时间(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);
我设置了手动确认,然后我在工作之前将消息确认为第一个操作。
在这段代码中,订阅者做了 40 秒的工作。 如果我发送 2 条消息,则第二条始终会重新发送。
我的错误是什么?
【问题讨论】: