コード例 #1
0
        public async Task <IActionResult> HealthCheck(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "health/liveness")] HttpRequest req, ILogger log)
        {
            var response = new HealthCheckResponse
            {
                VideoApiHealth    = { Successful = true },
                BookingsApiHealth = { Successful = true },
                UserApiHealth     = { Successful = true },
                AppVersion        = GetApplicationVersion()
            };

            try
            {
                await _videoApiClient.GetExpiredOpenConferencesAsync();
            }
            catch (Exception ex)
            {
                log.LogError(ex, "Unable to retrieve expired open conferences");
                response.VideoApiHealth = HandleVideoApiCallException(ex);
            }

            try
            {
                await _bookingsApiClient.CheckServiceHealthAsync();
            }
            catch (Exception ex)
            {
                response.BookingsApiHealth.Successful   = false;
                response.BookingsApiHealth.ErrorMessage = ex.Message;
                response.BookingsApiHealth.Data         = ex.Data;
            }

            try
            {
                await _userApiClient.CheckServiceHealthAsync();
            }
            catch (Exception ex)
            {
                response.UserApiHealth.Successful   = false;
                response.UserApiHealth.Data         = ex.Data;
                response.UserApiHealth.ErrorMessage = ex.Message;
            }

            return(new OkObjectResult(response));
        }
コード例 #2
0
        public async Task <IActionResult> Health()
        {
            var response = new HealthResponse {
                Version = GetApplicationVersion()
            };

            try
            {
                const string username = "******";
                var          query    = new GetUserByUsernameQuery(username);
                await _queryHandler.Handle <GetUserByUsernameQuery, UserDto>(query);

                response.TestApiHealth.Successful = true;
            }
            catch (Exception ex)
            {
                response.TestApiHealth.Successful   = false;
                response.TestApiHealth.ErrorMessage = ex.Message;
                response.TestApiHealth.Data         = ex.Data;
            }

            try
            {
                await _bookingsApiClient.CheckServiceHealthAsync();

                response.BookingsApiHealth.Successful = true;
            }
            catch (Exception ex)
            {
                response.BookingsApiHealth.Successful   = false;
                response.BookingsApiHealth.ErrorMessage = ex.Message;
                response.BookingsApiHealth.Data         = ex.Data;
            }

            try
            {
                await _userApiClient.CheckServiceHealthAsync();

                response.UserApiHealth.Successful = true;
            }
            catch (Exception ex)
            {
                response.UserApiHealth.Successful   = false;
                response.UserApiHealth.ErrorMessage = ex.Message;
                response.UserApiHealth.Data         = ex.Data;
            }

            try
            {
                await _videoApiClient.CheckServiceHealthAsync();

                response.VideoApiHealth.Successful = true;
            }
            catch (Exception ex)
            {
                response.VideoApiHealth.Successful   = false;
                response.VideoApiHealth.ErrorMessage = ex.Message;
                response.VideoApiHealth.Data         = ex.Data;
            }

            return(response.TestApiHealth.Successful && response.BookingsApiHealth.Successful &&
                   response.UserApiHealth.Successful && response.VideoApiHealth.Successful
                ? Ok(response)
                : StatusCode((int)HttpStatusCode.InternalServerError, response));
        }