@speedymonster/grpcjs-ts-health-check

2.0.6 • Public • Published

gRPC Js Health Check

License Current Version npm

An implementation of gRPC Js health checks, written in typescript.

It is assumed that you are using the grpc-js library.

Installation

npm install grpc-ts-health-check --save

Install the grpc-js library:

npm install @grpc/grpc-js --save

Dependencies

  • Google Protobuf: Protocol Buffers - Google's data interchange format.
  • gRPC Boom: A zero dependency library to help create gRPC-friendly error objects.

Usage

Methods

Below is a list of available methods:

watch(request)

Set the initial status of the service and continues to watch for any changes.

  • request - the HealthCheckRequest object.
const healthClient = new HealthClient(`${host}:${port}`, grpc.credentials.createInsecure());
const request = new HealthCheckRequest();
request.setService(serviceName);
const healthStream = healthClient.watch(request);
healthStream.on('data', (response: HealthCheckResponse) => {
  AppLogger.logger.debug(`Health Status: ${response.getStatus()}`);
});

check(request)

Checks the status of the service once.

  • request - the HealthCheckRequest object.
const healthClient = new HealthClient(`${host}:${port}`, grpc.credentials.createInsecure());
const request = new HealthCheckRequest();
request.setService(serviceName);
healthClient.check(request, (error: Error | null, response: HealthCheckResponse) => {
  if (error) {
    AppLogger.logger.error('Health Check Failed', error);
  } else {
    AppLogger.logger.debug(`Health Status: ${response.getStatus()}`);
  }
});

Example

import * as grpc from '@grpc/grpc-js';
import { GrpcHealthCheck, HealthCheckResponse, HealthService } from 'grpc-ts-health-check';

const serviceName = 'auth.Authenticator';
const healthCheckStatusMap = {
  serviceName: HealthCheckResponse.ServingStatus.UNKNOWN
};

function start(): grpc.Server {
  // Create the server
  const server: grpc.Server = new grpc.Server();

  // Register the health service
  const grpcHealthCheck = new GrpcHealthCheck(healthCheckStatusMap);
  server.addService(HealthService, grpcHealthCheck);

  // Bind and start the server
  server.bind('localhost:9090', grpc.ServerCredentials.createInsecure());
  server.start();

  // Create the health client
  const healthClient = new HealthClient(`${host}:${port}`, grpc.credentials.createInsecure());
  const request = new HealthCheckRequest();
  request.setService(serviceName);

  // Watch health status - streaming request
  // This will set the initial health status
  // and continue to watch the service for changes.
  const healthStream = healthClient.watch(request);
  healthStream.on('data', (response: HealthCheckResponse) => {
    AppLogger.logger.debug(`Authenticator Service: Health Status: ${response.getStatus()}`);
  });

  // Check health status - single request
  // This will provide the current health status
  // of the service when the request is executed.
  setTimeout(() => {
    healthClient.check(request, (error: Error | null, response: HealthCheckResponse) => {
      if (error) {
        AppLogger.logger.error('Authenticator Service: Health Check Failed', error);
      } else {
        AppLogger.logger.debug(
          `Authenticator Service: Health Check Status: ${response.getStatus()}`
        );
      }
    });
  }, 5000);
  return server;
}

Package Sidebar

Install

npm i @speedymonster/grpcjs-ts-health-check

Weekly Downloads

0

Version

2.0.6

License

MIT

Unpacked Size

31.7 kB

Total Files

10

Last publish

Collaborators

  • speedymonster