public void CreateEventArgs_WithServiceBusReceiver_GetsServiceBusReceiverSucceeds() { // Arrange Order order = OrderGenerator.Generate(); ServiceBusReceivedMessage message = order.AsServiceBusReceivedMessage(); var expectedReceiver = Mock.Of <ServiceBusReceiver>(); // Act var eventArgs = new ProcessMessageEventArgs(message, expectedReceiver, CancellationToken.None); // Assert ServiceBusReceiver actualReceiver = eventArgs.GetServiceBusReceiver(); Assert.Equal(expectedReceiver, actualReceiver); }
private async Task ProcessMessageAsync(ProcessMessageEventArgs args) { ServiceBusReceivedMessage message = args?.Message; if (message is null) { Logger.LogWarning("Received message on Azure Service Bus message pump '{JobId}' was null, skipping", JobId); return; } if (_isHostShuttingDown) { Logger.LogWarning("Abandoning message with ID '{MessageId}' as the Azure Service Bus message pump is shutting down", message.MessageId); await args.AbandonMessageAsync(message); return; } if (String.IsNullOrEmpty(message.CorrelationId)) { Logger.LogTrace("No operation ID was found on the message '{MessageId}' during processing in the Azure Service Bus message pump '{JobId}'", message.MessageId, JobId); } AzureServiceBusMessageContext messageContext = message.GetMessageContext(JobId); MessageCorrelationInfo correlationInfo = message.GetCorrelationInfo(Settings.Options.Correlation?.TransactionIdPropertyName ?? PropertyNames.TransactionId); ServiceBusReceiver receiver = args.GetServiceBusReceiver(); using (IServiceScope serviceScope = ServiceProvider.CreateScope()) { var correlationInfoAccessor = serviceScope.ServiceProvider.GetService <ICorrelationInfoAccessor <MessageCorrelationInfo> >(); if (correlationInfoAccessor is null) { Logger.LogTrace("No message correlation configured in Azure Service Bus message pump '{JobId}' while processing message '{MessageId}'", JobId, message.MessageId); await _messageRouter.RouteMessageAsync(receiver, args.Message, messageContext, correlationInfo, args.CancellationToken); } else { correlationInfoAccessor.SetCorrelationInfo(correlationInfo); using (LogContext.Push(new MessageCorrelationInfoEnricher(correlationInfoAccessor))) { await _messageRouter.RouteMessageAsync(receiver, args.Message, messageContext, correlationInfo, args.CancellationToken); } } } }