public static async Task <IActionResult> Health(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] object message,
            [SignalR(HubName = "simulator")] IAsyncCollector <SignalRMessage> signalRMessages)
        {
            var healthy = IsHealthy; // copy now.

            var hcs = new EndpointHealthCheck();

            hcs.EndpointLabel = Environment.GetEnvironmentVariable("EndpointLabel");
            hcs.Endpoint      = Environment.GetEnvironmentVariable("Endpoint"); // A B or C
            hcs.StatusCode    = healthy ? "200" : "503";
            hcs.Ticks         = DateTime.UtcNow.Ticks;
            hcs.Style         = healthy ? "success" : "failed";

            try
            {
                await signalRMessages.AddAsync(
                    new SignalRMessage
                {
                    Target    = "ReceiveEndpointHealthCheckData",
                    Arguments = new[] { hcs }
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            if (healthy)
            {
                return(new OkResult());
            }
            else
            {
                return(new StatusCodeResult(503));
            }
        }
Beispiel #2
0
 public async Task SendEndointStatuResult(EndpointHealthCheck data)
 {
     await Clients.All.SendAsync("ReceiveEndpointHealthCheckData", data);
 }