0
我正在使用帶自動完成選項的QueueClient消息泵。當從回調中拋出異常時,消息將被重試並最終失效。Azure服務總線消息重試TaskCancelationException
不幸的是,當從回調中拋出TaskCancelationException或OperationCanceledException時,情況並非如此。該消息會自動完成並且不會重試。另外OptionsOnExceptionReceived事件處理程序不被調用。
_queueClient = QueueClient.CreateFromConnectionString(connectionString, queueName, ReceiveMode.PeekLock);
...
public void OnMessageAsync(Func<BrokeredMessage, Task> callback)
{
if (_queueClient.IsClosed == false)
{
var options = new OnMessageOptions
{
MaxConcurrentCalls = _maxConcurrentCalls,
AutoRenewTimeout = TimeSpan.FromMinutes(_autoRenewTimeoutInMinutes),
AutoComplete = true
};
options.ExceptionReceived += OptionsOnExceptionReceived;
_queueClient.OnMessageAsync(callback, options);
}
}
上午我在這裏做得不對,它是一個錯誤或可能預期的行爲?
Azure Service Bus在另一個線程上正在進行完成。您是否嘗試禁用自動完成並在回調中完成自己? –
我確定手動自動完成功能可以正常工作。我很好奇爲什麼它不應該完成消息 – 85rainbow
如果在另一個線程上完成,與任務相關的異常將不會到達該代碼。 –