C# 当我';m处于接收和删除模式?

C# 当我';m处于接收和删除模式?,c#,azure,azureservicebus,azure-servicebus-queues,C#,Azure,Azureservicebus,Azure Servicebus Queues,我有以下Azure服务总线代码: private async Task startInternalAsync(CancellationToken cancellationToken) { await using var client = new ServiceBusClient(_connectionString); try { var processor = client.CreateProcessor(_queueName, new ServiceBusPro

我有以下Azure服务总线代码:

private async Task startInternalAsync(CancellationToken cancellationToken) {
    await using var client = new ServiceBusClient(_connectionString);
    try {
        var processor = client.CreateProcessor(_queueName, new ServiceBusProcessorOptions {
            ReceiveMode = ServiceBusReceiveMode.ReceiveAndDelete,
            PrefetchCount = 100
        });

        processor.ProcessMessageAsync += messageHandler;
        processor.ProcessErrorAsync += errorHandler;

        await processor.StartProcessingAsync(cancellationToken);
        await cancellationToken.WhenCanceled();

        _logger.LogDebug("Cancellation requested.  Stopping the receiver...");
        await processor.StopProcessingAsync();
        _logger.LogDebug("Stopped receiving messages.");
    }
    catch (TaskCanceledException) {
        _logger.LogDebug("Cancellation requested.  Exiting.");
    }
    catch (Exception ex) {
        _logger.LogError("Message processing exception.  Exiting.", ex.Message);
    }
}

private async Task messageHandler(ProcessMessageEventArgs args) {
    string body = args.Message.Body.ToString();
    _logger.LogDebug($"Received msg: {body}");

    // complete the message. message is deleted from the queue.
    await args.CompleteMessageAsync(args.Message);
}

private async Task errorHandler(ProcessErrorEventArgs args) {
    await Task.Yield();
    _logger.LogError(args.Exception.ToString());
}

但是,我真的需要在我的
messageHandler
中调用
wait args.CompleteMessageAsync(args.Message)
?我处于
ReceiveAndDelete
模式,因此在检索时应立即从ASB队列中删除消息,但是否仍需要
CompleteMessageAsync()
才能将其从本地队列中删除?或者我可以删除该呼叫吗?

您不需要呼叫
CompleteMessageAsync
,因为消息一经发送就会自动删除


事实上,我记得调用此方法实际上会在以
ReceiveAndDelete
模式获取消息时引发错误。

您不需要调用
completemessagesync
,因为消息一经传递就会自动删除

事实上,我记得调用此方法实际上会在以
ReceiveAndDelete
模式获取消息时引发错误