public static async Task Activity([ActivityTrigger] string requestId) { file.WriteLine("\nactivity"); file.WriteLine($"requestId {requestId}"); var telemetryClient = new TelemetryClient { InstrumentationKey = key }; telemetryClient.Context.Cloud.RoleName = nameof(Activity); var requestTelemetry = new RequestTelemetry { Name = nameof(Activity) }; requestTelemetry.Context.Operation.Id = CorrelationHelper.GetOperationId(requestId); requestTelemetry.Context.Operation.ParentId = requestId; using (var operation = telemetryClient.StartOperation(requestTelemetry)) { file.WriteLine($"telemetry id {operation.Telemetry.Id}"); file.WriteLine($"telemetry context operation id {operation.Telemetry.Context.Operation.Id}"); file.WriteLine($"telemetry context parent id {operation.Telemetry.Context.Operation.ParentId}"); await Task.Delay(3500); operation.Telemetry.Success = true; } }
public static async Task Orchestrator([OrchestrationTrigger] DurableOrchestrationContextBase ctx) { var telemetryClient = new TelemetryClient { InstrumentationKey = key }; telemetryClient.Context.Cloud.RoleName = nameof(Orchestrator); var requestId = ctx.GetInput <string>(); if (!ctx.IsReplaying) // start operations { // request telemetry for the orchestrator's execution var requestTelemetry = new RequestTelemetry { Name = nameof(Orchestrator) }; requestTelemetry.Context.Operation.Id = CorrelationHelper.GetOperationId(requestId); requestTelemetry.Context.Operation.ParentId = requestId; operation = telemetryClient.StartOperation(requestTelemetry); file.WriteLine("\norchestrator"); file.WriteLine($"requestId {requestId}"); file.WriteLine($"request telemetry id {operation.Telemetry.Id}"); file.WriteLine($"request telemetry parent id {operation.Telemetry.Context.Operation.ParentId}"); // dependency telemetry for the activity invocation var dependencyTelemetry = new DependencyTelemetry { Name = $"{nameof(Orchestrator)}_Dependency", Target = "Activity", Type = "activity" }; dependencyTelemetry.Context.Operation.Id = CorrelationHelper.GetOperationId(requestId); dependencyTelemetry.Context.Operation.ParentId = operation.Telemetry.Id; dependencyOperation = telemetryClient.StartOperation(dependencyTelemetry); file.WriteLine($"dependency id {dependencyOperation.Telemetry.Id}"); file.WriteLine($"dependency parent id {dependencyOperation.Telemetry.Context.Operation.ParentId}"); } await ctx.CallActivityAsync(nameof(Activity), dependencyOperation.Telemetry.Id); if (!ctx.IsReplaying) { file.WriteLine("\norchestrator"); // stop dependency telemetry operation file.WriteLine($"stopping operation {dependencyOperation.Telemetry.Id}"); dependencyOperation.Telemetry.Success = true; telemetryClient.StopOperation(dependencyOperation); // stop request telemetry operation file.WriteLine($"stopping operation {operation.Telemetry.Id}"); operation.Telemetry.Success = true; operation.Telemetry.ResponseCode = "200"; telemetryClient.StopOperation(operation); file.Close(); } }