0
자동 완성 옵션과 함께 QueueClient 메시지 펌프를 사용하고 있습니다. 콜백에서 예외가 발생하면 메시지가 다시 시도되고 마지막으로 삭제됩니다.Azure 서비스 버스 메시지가 TaskCancelationException에서 다시 시도됩니다.
불행히도 TaskCancelationException 또는 OperationCanceledException이 콜백에서 발생하는 경우 그렇지 않습니다. 메시지는 자동 완성되어 재 시도되지 않습니다. 또한 OptionsOnExceptionReceived 이벤트 핸들러가 호출되지 않습니다.
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);
}
}
내가 여기 뭔가 잘못하고 있습니까
_queueClient = QueueClient.CreateFromConnectionString(connectionString, queueName, ReceiveMode.PeekLock);
..., 그것은 버그가 아니면 동작을위한?
Azure Service Bus에서 다른 스레드에서 완료가 발생했습니다. 자동 완료를 사용 중지하고 콜백에서 자신을 완료하려고 시도 했습니까? –
수동 자동 완성 기능이 작동합니다. 나는 그것이어야 할 때 메시지를 완성하는 이유가 궁금합니다. – 85rainbow
다른 스레드에서 완료되면 작업 관련 예외가 해당 코드에 도달하지 않습니다. –