Skip to content

Commit

Permalink
feat: implement multi-cluster NATS client (#804)
Browse files Browse the repository at this point in the history
* wip: nats configuration

Signed-off-by: bhavanakarwade <[email protected]>

* refactor: nats config function

Signed-off-by: bhavanakarwade <[email protected]>

* wip: implemented nats queue functionality

Signed-off-by: bhavanakarwade <[email protected]>

* wip: implemented nats queue functionality

Signed-off-by: bhavanakarwade <[email protected]>

* wip: nats queue configurations

Signed-off-by: bhavanakarwade <[email protected]>

* feat: support nats queue

Signed-off-by: bhavanakarwade <[email protected]>

* fix: add logger

Signed-off-by: bhavanakarwade <[email protected]>

* refactor: added logger

Signed-off-by: bhavanakarwade <[email protected]>

* fix: remove unnecessary logs

Signed-off-by: bhavanakarwade <[email protected]>

* fix: added optional parameter

Signed-off-by: bhavanakarwade <[email protected]>

* feat: implement nats queue

Signed-off-by: bhavanakarwade <[email protected]>

---------

Signed-off-by: bhavanakarwade <[email protected]>
  • Loading branch information
bhavanakarwade authored and KulkarniShashank committed Sep 11, 2024
1 parent b7f48f6 commit 7a8d182
Show file tree
Hide file tree
Showing 46 changed files with 141 additions and 53 deletions.
3 changes: 2 additions & 1 deletion apps/agent-provisioning/src/agent-provisioning.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ import { AgentProvisioningService } from './agent-provisioning.service';
import { ClientsModule, Transport } from '@nestjs/microservices';
import { ConfigModule } from '@nestjs/config';
import { getNatsOptions } from '@credebl/common/nats.config';
import { CommonConstants } from '@credebl/common/common.constant';
@Module({
imports: [
ConfigModule.forRoot(),
ClientsModule.register([
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.AGENT_PROVISIONING_NKEY_SEED)
options: getNatsOptions(CommonConstants.AGENT_PROVISIONING, process.env.AGENT_PROVISIONING_NKEY_SEED)

}
])
Expand Down
3 changes: 2 additions & 1 deletion apps/agent-provisioning/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@ import { Logger } from '@nestjs/common';
import { MicroserviceOptions, Transport } from '@nestjs/microservices';
import { AgentProvisioningModule } from './agent-provisioning.module';
import { getNatsOptions } from '@credebl/common/nats.config';
import { CommonConstants } from '@credebl/common/common.constant';
const logger = new Logger();

async function bootstrap(): Promise<void> {

const app = await NestFactory.createMicroservice<MicroserviceOptions>(AgentProvisioningModule, {
transport: Transport.NATS,
options: getNatsOptions(process.env.AGENT_PROVISIONING_NKEY_SEED)
options: getNatsOptions(CommonConstants.AGENT_PROVISIONING, process.env.AGENT_PROVISIONING_NKEY_SEED)
});
app.useGlobalFilters(new HttpExceptionFilter());

Expand Down
3 changes: 2 additions & 1 deletion apps/agent-service/src/agent-service.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { ConnectionRepository } from 'apps/connection/src/connection.repository'
import { CacheModule } from '@nestjs/cache-manager';
import { getNatsOptions } from '@credebl/common/nats.config';
import { UserActivityRepository } from 'libs/user-activity/repositories';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -19,7 +20,7 @@ import { UserActivityRepository } from 'libs/user-activity/repositories';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.AGENT_SERVICE_NKEY_SEED)
options: getNatsOptions(CommonConstants.AGENT_SERVICE, process.env.AGENT_SERVICE_NKEY_SEED)
}
]),
CommonModule,
Expand Down
2 changes: 1 addition & 1 deletion apps/agent-service/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ async function bootstrap(): Promise<void> {

const app = await NestFactory.createMicroservice<MicroserviceOptions>(AgentServiceModule, {
transport: Transport.NATS,
options: getNatsOptions(process.env.AGENT_SERVICE_NKEY_SEED)
options: getNatsOptions(CommonConstants.AGENT_SERVICE, process.env.AGENT_SERVICE_NKEY_SEED)

});
app.useGlobalFilters(new HttpExceptionFilter());
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/agent-service/agent-service.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { ConfigModule } from '@nestjs/config';
import { AgentController } from './agent-service.controller';
import { AgentService } from './agent-service.service';
import { getNatsOptions } from '@credebl/common/nats.config';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -16,7 +17,7 @@ import { getNatsOptions } from '@credebl/common/nats.config';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.AGENT_SERVICE, process.env.API_GATEWAY_NKEY_SEED)

},
CommonModule
Expand Down
4 changes: 2 additions & 2 deletions apps/api-gateway/src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import * as redisStore from 'cache-manager-redis-store';
import { WebhookModule } from './webhook/webhook.module';
import { UtilitiesModule } from './utilities/utilities.module';
import { NotificationModule } from './notification/notification.module';
import { GeoLocationModule } from './geo-location/geo-location.module';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -35,7 +35,7 @@ import { GeoLocationModule } from './geo-location/geo-location.module';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.API_GATEWAY_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
}
]),
AgentModule,
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/authz/authz.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { VerificationService } from '../verification/verification.service';
import { EcosystemService } from '../ecosystem/ecosystem.service';
import { getNatsOptions } from '@credebl/common/nats.config';
import { OrganizationService } from '../organization/organization.service';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -31,7 +32,7 @@ import { OrganizationService } from '../organization/organization.service';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.AUTH_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
},
CommonModule
]),
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/connection/connection.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { ConnectionController } from './connection.controller';
import { ConnectionService } from './connection.service';
import { Module } from '@nestjs/common';
import { ClientsModule, Transport } from '@nestjs/microservices';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -11,7 +12,7 @@ import { ClientsModule, Transport } from '@nestjs/microservices';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.CONNECTION_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
}
])
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ import { Logger, Module } from '@nestjs/common';
import { CredentialDefinitionController } from './credential-definition.controller';
import { CredentialDefinitionService } from './credential-definition.service';
import { getNatsOptions } from '@credebl/common/nats.config';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports:[
ClientsModule.register([
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.CREDENTIAL_DEFINITION_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
}
])
],
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/ecosystem/ecosystem.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { Module } from '@nestjs/common';
import { EcosystemController } from './ecosystem.controller';
import { EcosystemService } from './ecosystem.service';
import { getNatsOptions } from '@credebl/common/nats.config';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -16,7 +17,7 @@ import { getNatsOptions } from '@credebl/common/nats.config';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.ECOSYSTEM_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
},
CommonModule
])
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/fido/fido.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ import { ClientsModule, Transport } from '@nestjs/microservices';
import { FidoController } from './fido.controller';
import { FidoService } from './fido.service';
import { getNatsOptions } from '@credebl/common/nats.config';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports:[
ClientsModule.register([
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.FIDO_SERVICE, process.env.API_GATEWAY_NKEY_SEED)

}
])
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/issuance/issuance.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { CommonService } from '@credebl/common';
import { HttpModule } from '@nestjs/axios';
import { ImageServiceService } from '@credebl/image-service';
import { AwsService } from '@credebl/aws';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -14,7 +15,7 @@ import { AwsService } from '@credebl/aws';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.ISSUANCE_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
}
])
],
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { getNatsOptions } from '@credebl/common/nats.config';

import helmet from 'helmet';
import { NodeEnvironment } from '@credebl/enum/enum';
import { CommonConstants } from '@credebl/common/common.constant';
dotenv.config();

async function bootstrap(): Promise<void> {
Expand All @@ -24,7 +25,7 @@ async function bootstrap(): Promise<void> {

app.connectMicroservice<MicroserviceOptions>({
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.API_GATEWAY_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
});

app.use(express.json({ limit: '50mb' }));
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/notification/notification.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { Module } from '@nestjs/common';
import { getNatsOptions } from '@credebl/common/nats.config';
import { NotificationController } from './notification.controller';
import { NotificationService } from './notification.service';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -16,7 +17,7 @@ import { NotificationService } from './notification.service';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.NOTIFICATION_SERVICE, process.env.API_GATEWAY_NKEY_SEED)

},
CommonModule
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/organization/organization.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { OrganizationService } from './organization.service';
import { getNatsOptions } from '@credebl/common/nats.config';
import { ImageServiceService } from '@credebl/image-service';
import { AwsService } from '@credebl/aws';
import { CommonConstants } from '@credebl/common/common.constant';
@Module({
imports: [
HttpModule,
Expand All @@ -17,7 +18,7 @@ import { AwsService } from '@credebl/aws';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.ORGANIZATION_SERVICE, process.env.API_GATEWAY_NKEY_SEED)

},
CommonModule
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/platform/platform.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { PlatformService } from './platform.service';
import { ClientsModule, Transport } from '@nestjs/microservices';
import { ConfigModule } from '@nestjs/config';
import { getNatsOptions } from '@credebl/common/nats.config';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -12,7 +13,7 @@ import { getNatsOptions } from '@credebl/common/nats.config';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.PLATFORM_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
}
])
],
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/schema/schema.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { Module } from '@nestjs/common';
import { SchemaController } from './schema.controller';
import { SchemaService } from './schema.service';
import { getNatsOptions } from '@credebl/common/nats.config';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -13,7 +14,7 @@ import { getNatsOptions } from '@credebl/common/nats.config';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.SCHEMA_SERVICE, process.env.API_GATEWAY_NKEY_SEED)

}
])
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/user/user.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { Module } from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';
import { AwsService } from '@credebl/aws';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -15,7 +16,7 @@ import { AwsService } from '@credebl/aws';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.USER_SERVICE, process.env.API_GATEWAY_NKEY_SEED)

}
])
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/utilities/utilities.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { getNatsOptions } from '@credebl/common/nats.config';
import { ImageServiceService } from '@credebl/image-service';
import { UtilitiesController } from './utilities.controller';
import { UtilitiesService } from './utilities.service';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -17,7 +18,7 @@ import { UtilitiesService } from './utilities.service';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.UTILITY_SERVICE, process.env.API_GATEWAY_NKEY_SEED)

},
CommonModule
Expand Down
4 changes: 3 additions & 1 deletion apps/api-gateway/src/verification/verification.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import { Module } from '@nestjs/common';
import { VerificationController } from './verification.controller';
import { VerificationService } from './verification.service';
import { getNatsOptions } from '@credebl/common/nats.config';
import { ImageServiceService } from '@credebl/image-service';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -13,7 +15,7 @@ import { getNatsOptions } from '@credebl/common/nats.config';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.VERIFICATION_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
}
])
],
Expand Down
3 changes: 2 additions & 1 deletion apps/api-gateway/src/webhook/webhook.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { CommonService } from '@credebl/common';
import { HttpModule } from '@nestjs/axios';
import { getNatsOptions } from '@credebl/common/nats.config';
import { AwsService } from '@credebl/aws';
import { CommonConstants } from '@credebl/common/common.constant';

@Module({
imports: [
Expand All @@ -14,7 +15,7 @@ import { AwsService } from '@credebl/aws';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.API_GATEWAY_NKEY_SEED)
options: getNatsOptions(CommonConstants.WEBHOOK_SERVICE, process.env.API_GATEWAY_NKEY_SEED)
}
])
],
Expand Down
3 changes: 2 additions & 1 deletion apps/connection/src/connection.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { PrismaService } from '@credebl/prisma-service';
import { CacheModule } from '@nestjs/cache-manager';
import { getNatsOptions } from '@credebl/common/nats.config';
import { UserActivityRepository } from 'libs/user-activity/repositories';
import { CommonConstants } from '@credebl/common/common.constant';
// import { nkeyAuthenticator } from 'nats';

@Module({
Expand All @@ -17,7 +18,7 @@ import { UserActivityRepository } from 'libs/user-activity/repositories';
{
name: 'NATS_CLIENT',
transport: Transport.NATS,
options: getNatsOptions(process.env.CONNECTION_NKEY_SEED)
options: getNatsOptions(CommonConstants.CONNECTION_SERVICE, process.env.CONNECTION_NKEY_SEED)
}
]),

Expand Down
3 changes: 2 additions & 1 deletion apps/connection/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ import { HttpExceptionFilter } from 'libs/http-exception.filter';
import { Logger } from '@nestjs/common';
import { MicroserviceOptions, Transport } from '@nestjs/microservices';
import { getNatsOptions } from '@credebl/common/nats.config';
import { CommonConstants } from '@credebl/common/common.constant';

const logger = new Logger();

async function bootstrap(): Promise<void> {

const app = await NestFactory.createMicroservice<MicroserviceOptions>(ConnectionModule, {
transport: Transport.NATS,
options: getNatsOptions(process.env.CONNECTION_NKEY_SEED)
options: getNatsOptions(CommonConstants.CONNECTION_SERVICE, process.env.CONNECTION_NKEY_SEED)
});

app.useGlobalFilters(new HttpExceptionFilter());
Expand Down
Loading

0 comments on commit 7a8d182

Please sign in to comment.