// TODO Move to helper class private async Task SendMessage(string queueName, object value) { var connectionString = _connectionStringsConfig.TestMusicAppServiceBus; var messageJson = JsonConvert.SerializeObject(value); var queueClient = new QueueClient(connectionString, queueName); var message = ServiceBusMessageConverter.StringToMessage(messageJson); await queueClient.SendAsync(message); await queueClient.CloseAsync(); }
private async Task ProcessMessagesAsync(Message message, CancellationToken cancellationToken) { // Create scope manually because ProcessMessagesAsync executes outside // of the ASP.NET lifecycle using (var scope = _scopeFactory.CreateScope()) { try { var mediator = scope.ServiceProvider.GetService <IMediator>(); var messageJson = ServiceBusMessageConverter.MessageToString(message); var deserializedMessage = JsonConvert.DeserializeObject <AudioUploadingResultMessage>(messageJson); var trackUploadFinishedEvent = new TrackUploadFinishedEvent { FileName = deserializedMessage.FileName, IsSuccess = deserializedMessage.IsSuccess, UserId = deserializedMessage.AdditionalData.UserId, PlaylistId = deserializedMessage.AdditionalData.PlaylistId, TrackName = deserializedMessage.AdditionalData.TrackName }; await mediator.Publish(trackUploadFinishedEvent, cancellationToken); } catch (Exception ex) { _logger.LogError(ex, "Upload track"); var exceptionJson = JsonConvert.SerializeObject(ex); await _queueClient.DeadLetterAsync( message.SystemProperties.LockToken, DeadLetterExceptionReason, exceptionJson); return; } await _queueClient.CompleteAsync(message.SystemProperties.LockToken); } }