Skip to content

Commit 5ac391e

Browse files
authored
nats unhandled exception wrapping (#1784)
1 parent 140ab4f commit 5ac391e

1 file changed

Lines changed: 56 additions & 8 deletions

File tree

src/DotNetCore.CAP.NATS/NATSConsumerClient.cs

Lines changed: 56 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ private async void SubscriptionMessageHandler(object? sender, MsgHandlerEventArg
149149
{
150150
if (_groupConcurrent > 0)
151151
{
152-
_semaphore.Wait();
153-
_ = Task.Run(ConsumeAsync).ConfigureAwait(false);
152+
await _semaphore.WaitAsync().ConfigureAwait(false);
153+
_ = Task.Run(ConsumeAsync);
154154
}
155155
else
156156
{
@@ -183,21 +183,69 @@ Task ConsumeAsync()
183183

184184
public Task CommitAsync(object? sender)
185185
{
186-
if (sender is Msg msg)
186+
try
187187
{
188-
msg.Ack();
188+
if (sender is Msg msg)
189+
{
190+
msg.Ack();
191+
}
192+
}
193+
catch (Exception ex)
194+
{
195+
OnLogCallback?.Invoke(new LogMessageEventArgs
196+
{
197+
LogType = MqLogType.AsyncErrorEvent,
198+
Reason = $"NATS message ACK failed: {ex}"
199+
});
200+
}
201+
finally
202+
{
203+
if (_groupConcurrent > 0)
204+
{
205+
try
206+
{
207+
_semaphore.Release();
208+
}
209+
catch (SemaphoreFullException)
210+
{
211+
// ignore (defensive)
212+
}
213+
}
189214
}
190-
_semaphore.Release();
191215
return Task.CompletedTask;
192216
}
193217

194218
public Task RejectAsync(object? sender)
195219
{
196-
if (sender is Msg msg)
220+
try
197221
{
198-
msg.Nak();
222+
if (sender is Msg msg)
223+
{
224+
msg.Nak();
225+
}
226+
}
227+
catch (Exception ex)
228+
{
229+
OnLogCallback?.Invoke(new LogMessageEventArgs
230+
{
231+
LogType = MqLogType.AsyncErrorEvent,
232+
Reason = $"NATS message NAK failed: {ex}"
233+
});
234+
}
235+
finally
236+
{
237+
if (_groupConcurrent > 0)
238+
{
239+
try
240+
{
241+
_semaphore.Release();
242+
}
243+
catch (SemaphoreFullException)
244+
{
245+
// ignore (defensive)
246+
}
247+
}
199248
}
200-
_semaphore.Release();
201249
return Task.CompletedTask;
202250
}
203251

0 commit comments

Comments
 (0)