public async Task Run([ServiceBusTrigger("%job-profiles-refresh-topic%", "%job-profiles-refresh-subscription%", Connection = "service-bus-connection-string")] Message segmentRefreshMessage) { if (segmentRefreshMessage is null) { throw new System.ArgumentNullException(nameof(segmentRefreshMessage)); } if (processor is null) { throw new System.ArgumentNullException(nameof(processor)); } if (correlationIdProvider != null) { correlationIdProvider.CorrelationId = segmentRefreshMessage.CorrelationId; } segmentRefreshMessage.UserProperties.TryGetValue(MessageAction, out var messageAction); // Parse to enum values segmentRefreshMessage.UserProperties.TryGetValue(MessageContentType, out var messageCtype); segmentRefreshMessage.UserProperties.TryGetValue(MessageContentId, out var messageContentId); // loggger should allow setting up correlation id and should be picked up from message logService.LogInformation($"{thisClassPath}: Received message action {messageAction} for type {messageCtype} with Id: {messageContentId}: Correlation id {segmentRefreshMessage.CorrelationId}"); var message = Encoding.UTF8.GetString(segmentRefreshMessage.Body); //Check whether we need to defer failed messages? await processor.ProcessSegmentRefresEventAsync(message, segmentRefreshMessage.SystemProperties.SequenceNumber).ConfigureAwait(false); }