private void SetUpTelemetryCallbacks()
        {
            CorrelationTraceClient.SetUp(
                (TraceContextBase requestTraceContext) =>
            {
                requestTraceContext.Stop();

                var requestTelemetry = requestTraceContext.CreateRequestTelemetry();
                this.telemetryClient.TrackRequest(requestTelemetry);
            },
                (TraceContextBase dependencyTraceContext) =>
            {
                dependencyTraceContext.Stop();
                var dependencyTelemetry = dependencyTraceContext.CreateDependencyTelemetry();
                this.telemetryClient.TrackDependency(dependencyTelemetry);
            },
                (Exception e) =>
            {
                this.telemetryClient.TrackException(e);
            });
        }
Ejemplo n.º 2
0
        private void SetUpTelemetryCallbacks()
        {
            var resolvedSiteName = this.nameResolver?.Resolve("WEBSITE_SITE_NAME")?.ToLower() ?? string.Empty;

            CorrelationTraceClient.SetUp(
                (TraceContextBase requestTraceContext) =>
            {
                requestTraceContext.Stop();

                var requestTelemetry = requestTraceContext.CreateRequestTelemetry(resolvedSiteName);
                this.telemetryClient.TrackRequest(requestTelemetry);
            },
                (TraceContextBase dependencyTraceContext) =>
            {
                dependencyTraceContext.Stop();
                var dependencyTelemetry = dependencyTraceContext.CreateDependencyTelemetry();
                this.telemetryClient.TrackDependency(dependencyTelemetry);
            },
                (Exception e) =>
            {
                this.telemetryClient.TrackException(e);
            });
        }
Ejemplo n.º 3
0
        async Task <MessageData> AddMessageAsync(TaskMessage taskMessage, OrchestrationInstance sourceInstance, SessionBase?session)
        {
            MessageData data;

            try
            {
                // We transfer to a new trace activity ID every time a new outbound queue message is created.
                Guid outboundTraceActivityId = Guid.NewGuid();
                data = new MessageData(
                    taskMessage,
                    outboundTraceActivityId,
                    this.storageQueue.Name,
                    session?.GetCurrentEpisode(),
                    sourceInstance);
                data.SequenceNumber = Interlocked.Increment(ref messageSequenceNumber);

                // Inject Correlation TraceContext on a queue.
                CorrelationTraceClient.Propagate(
                    () => { data.SerializableTraceContext = GetSerializableTraceContext(taskMessage); });

                string rawContent = await this.messageManager.SerializeMessageDataAsync(data);

                QueueMessage queueMessage = new QueueMessage(rawContent);

                this.settings.Logger.SendingMessage(
                    outboundTraceActivityId,
                    this.storageAccountName,
                    this.settings.TaskHubName,
                    taskMessage.Event.EventType.ToString(),
                    Utils.GetTaskEventId(taskMessage.Event),
                    sourceInstance.InstanceId,
                    sourceInstance.ExecutionId,
                    Encoding.UTF8.GetByteCount(rawContent),
                    data.QueueName /* PartitionId */,
                    taskMessage.OrchestrationInstance.InstanceId,
                    taskMessage.OrchestrationInstance.ExecutionId,
                    data.SequenceNumber,
                    data.Episode.GetValueOrDefault(-1));

                await this.storageQueue.AddMessageAsync(
                    queueMessage,
                    GetVisibilityDelay(taskMessage),
                    session?.TraceActivityId);

                // Wake up the queue polling thread
                this.backoffHelper.Reset();
            }
            catch (DurableTaskStorageException e)
            {
                this.settings.Logger.MessageFailure(
                    this.storageAccountName,
                    this.settings.TaskHubName,
                    string.Empty /* MessageId */,
                    sourceInstance.InstanceId,
                    sourceInstance.ExecutionId,
                    this.storageQueue.Name,
                    taskMessage.Event.EventType.ToString(),
                    Utils.GetTaskEventId(taskMessage.Event),
                    e.ToString());
                throw;
            }

            return(data);
        }