private static void AddSecretStore(WorkerOptions options, KeyRotationConfig rotationConfig) { options.Configure(host => host.ConfigureSecretStore((configuration, stores) => { stores.AddAzureKeyVaultWithServicePrincipal( rotationConfig.KeyVault.VaultUri, rotationConfig.ServicePrincipal.ClientId, rotationConfig.ServicePrincipal.ClientSecret) .AddConfiguration(configuration); })); }
public async Task ServiceBusMessagePump_FailureDuringMessageHandling_TracksCorrelationInApplicationInsights() { // Arrange var config = TestConfig.Create(); string connectionString = config.GetServiceBusConnectionString(ServiceBusEntityType.Queue); var spySink = new InMemoryLogSink(); var options = new WorkerOptions(); options.Configure(host => host.UseSerilog((context, currentConfig) => { currentConfig .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) .Enrich.FromLogContext() .Enrich.WithVersion() .Enrich.WithComponentName("Service Bus Queue Worker") .WriteTo.Sink(spySink); })); options.AddServiceBusQueueMessagePump(configuration => connectionString, opt => opt.AutoComplete = true) .WithServiceBusMessageHandler <OrdersSabotageAzureServiceBusMessageHandler, Order>(); string operationId = $"operation-{Guid.NewGuid()}", transactionId = $"transaction-{Guid.NewGuid()}"; ServiceBusMessage orderMessage = OrderGenerator.Generate().AsServiceBusMessage(operationId, transactionId); await using (var worker = await Worker.StartNewAsync(options)) { await using (var service = await TestMessagePumpService.StartNewAsync(config, _logger)) { // Act await service.SendMessageToServiceBusAsync(connectionString, orderMessage); } // Assert RetryAssertUntilTelemetryShouldBeAvailable(() => { Assert.Contains(spySink.CurrentLogEmits, log => log.Exception?.InnerException?.Message.Contains("Sabotage") == true && log.ContainsProperty(ContextProperties.Correlation.OperationId, operationId) && log.ContainsProperty(ContextProperties.Correlation.TransactionId, transactionId)); }, timeout: TimeSpan.FromMinutes(1)); } }