public override void Log(ExceptionLoggerContext context)
        {
            LoggingContext.CreateLogger <ExceptionLogger>()
            .LogError(context.Exception, "Request {uri} failed", context.Request.RequestUri);

            base.Log(context);
        }
예제 #2
0
        private async Task <QueueItemProcessResult> ProcessMessagesAsync(QueueRequest request, IServiceBusClient sbSender, CancellationToken token)
        {
            try
            {
                // update user
                UserEntity dbUser = await adapterDocumentDbDependencyClient.GetUser(request.Id);

                dbUser.Processed = true;
                await adapterDocumentDbDependencyClient.UpdateUser(dbUser);

                await sbSenderClient.SendAsync(request);

                return(QueueItemProcessResult.Complete);
            }
            catch (Exception ex)
            {
                LoggingContext.CreateLogger <ServiceBusDependencyReceiver>()
                .LogError(
                    ex,
                    "{queue} item processing unhandled exception for type={type}, id={messageId}",
                    sbReceiverClient.QueueName,
                    request.GetType().Name,
                    request.Id);
                return(QueueItemProcessResult.Retry);
            }
        }
예제 #3
0
        private async Task <byte[]> HandleAndTrackRequestAsync(ServiceRemotingMessageHeaders messageHeaders, Func <Task <byte[]> > doHandleRequest)
        {
            // set service context
            ServiceFabricServiceContext.Set(serviceContext);

            // create logger per operation
            ILogger logger = LoggingContext.CreateLogger <CorrelatingRemotingMessageHandler>();

            // Do our best effort in setting the request name.
            string methodName = methodNameProvider.GetMethodName(messageHeaders.InterfaceId, messageHeaders.MethodId);

            // Weird case, we couldn't find the method in the map. Just use the numerical id as the method name
            if (string.IsNullOrEmpty(methodName))
            {
                methodName = messageHeaders.MethodId.ToString();
            }

            // get service & operation names
            Uri    operationUri  = ServiceFabricHelper.MakeOperationUri(serviceContext.ServiceName, methodName);
            string operationName = ServiceFabricHelper.MakeOperationName(serviceContext.ServiceName, methodName);
            string serviceName   = ServiceFabricHelper.GetServiceName(serviceContext.ServiceName);

            // create request activity
            Activity activity = new Activity(operationName);

            if (messageHeaders.TryGetHeaderValue(ServiceRemotingStrings.ParentIdHeaderName, out string parentId))
            {
                activity.SetParentId(parentId);
            }

            // get parent operation source
            messageHeaders.TryGetHeaderValue(ServiceRemotingStrings.SourceHeaderName, out string source);

            // set activity baggage
            if (messageHeaders.TryGetHeaderValue(ServiceRemotingStrings.CorrelationContextHeaderName, out byte[] correlationBytes))
예제 #4
0
        protected override async Task RunAsync(CancellationToken cancellationToken)
        {
            try
            {
                // init service fabric context
                ServiceFabricServiceContext.Set(Context);

                await Task.CompletedTask;
            }
            catch (Exception ex)
            {
                LoggingContext.CreateLogger <WebApi>()
                .LogError(ex, "Service exception in RunAsync");
            }
        }
예제 #5
0
        protected override async Task RunAsync(CancellationToken cancellationToken)
        {
            try
            {
                // init service fabric context
                ServiceFabricServiceContext.Set(Context);

                // start a service bus receiver
                sbReceiverClient.Receive <QueueRequest>(ProcessMessagesAsync);

                await Task.CompletedTask;
            }
            catch (Exception ex)
            {
                LoggingContext.CreateLogger <ServiceBusDependencyReceiver>()
                .LogError(ex, "Service exception in RunAsync");
            }
        }
예제 #6
0
        protected override async Task RunAsync(CancellationToken cancellationToken)
        {
            try
            {
                // init service fabric context
                ServiceFabricServiceContext.Set(Context);

                // initailize DocumentDb client factory
                var config = new DocumentDbConnectionConfig();
                documentDbClientFactory = new DocumentDbClientFactory(config);

                // initilize the DOcument database & collection
                await UserCollectionInitializer.Initialize(documentDbClientFactory);

                await Task.CompletedTask;
            }
            catch (Exception ex)
            {
                LoggingContext.CreateLogger <DocumentDbDependency>()
                .LogError(ex, "Service exception in RunAsync");
            }
        }