public Task Subscribe(IMessageSubscriber handler, string queue) { _Client = new QueueClient(_ConnectionString, queue, ReceiveMode.PeekLock); var messageHandlerOptions = new MessageHandlerOptions((e) => { return(Task.Delay(100)); }) { AutoComplete = false, MaxConcurrentCalls = 1 }; _Client.RegisterMessageHandler(async(busMessage, concurrentToken) => { var token = busMessage.SystemProperties.LockToken; try { var body = busMessage.Body; if (handler != null) { var message = JsonConvert.DeserializeObject <BusMessage>(Encoding.UTF8.GetString(body)); await handler.Handle(message); } await _Client.CompleteAsync(token); } catch (CommandException) { await _Client.DeadLetterAsync(token); } catch { await _Client.AbandonAsync(token); } }, messageHandlerOptions); return(Task.CompletedTask); }