Skip to content

Commit 9651684

Browse files
committed
Add healthcheck to email service
1 parent 0244e33 commit 9651684

4 files changed

Lines changed: 44 additions & 4 deletions

File tree

‎packages/email-service/src/app.module.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import { AppController } from './app.controller';
33
import { AppService } from './app.service';
44
import { EmailModule } from './modules/email/email.module';
55
import { SentryModule } from '@sentry/nestjs/setup';
6+
import { HealthModule } from './modules/health/health.module';
67

78
@Module({
8-
imports: [SentryModule.forRoot(), EmailModule],
9+
imports: [SentryModule.forRoot(), EmailModule, HealthModule],
910
controllers: [AppController],
1011
providers: [AppService],
1112
})

‎packages/email-service/src/main.ts‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ import { AppModule } from './app.module';
44
import { MicroserviceOptions, Transport } from '@nestjs/microservices';
55
import { join } from 'path';
66
import { ConfigModule } from '@nestjs/config';
7-
import { EmailProtoFile, EmailProto } from 'juno-proto';
7+
import {
8+
EmailProtoFile,
9+
EmailProto,
10+
HealthProto,
11+
HealthProtoFile,
12+
} from 'juno-proto';
813
import { SentryFilter } from './sentry.filter';
914

1015
async function bootstrap() {
@@ -16,8 +21,11 @@ async function bootstrap() {
1621
{
1722
transport: Transport.GRPC,
1823
options: {
19-
package: [EmailProto.JUNO_EMAIL_PACKAGE_NAME],
20-
protoPath: [EmailProtoFile],
24+
package: [
25+
EmailProto.JUNO_EMAIL_PACKAGE_NAME,
26+
HealthProto.GRPC_HEALTH_V1_PACKAGE_NAME,
27+
],
28+
protoPath: [EmailProtoFile, HealthProtoFile],
2129
url: process.env.EMAIL_SERVICE_ADDR,
2230
},
2331
},
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Controller } from '@nestjs/common';
2+
import { HealthProto } from 'juno-proto';
3+
import { Observable } from 'rxjs';
4+
5+
@Controller()
6+
@HealthProto.HealthControllerMethods()
7+
export class HealthController implements HealthProto.HealthController {
8+
Watch(
9+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
10+
request: HealthProto.HealthCheckRequest,
11+
): Observable<HealthProto.HealthCheckResponse> {
12+
throw new Error('Method not implemented.');
13+
}
14+
Check(
15+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
16+
_request: HealthProto.HealthCheckRequest,
17+
):
18+
| HealthProto.HealthCheckResponse
19+
| Promise<HealthProto.HealthCheckResponse> {
20+
return {
21+
status: HealthProto.HealthCheckResponse_ServingStatus.SERVING,
22+
};
23+
}
24+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { Module } from '@nestjs/common';
2+
import { HealthController } from './health.controller';
3+
4+
@Module({
5+
controllers: [HealthController],
6+
})
7+
export class HealthModule {}

0 commit comments

Comments
 (0)