0.1.4 • Published 5 months ago

nestjs-axon-modules v0.1.4

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

NestJS Axon Modules

Description

This is a collection of modules for NestJS that provide support for Axon Framework.

Features

  • Server Push Driver
  • Server Pull Driver
  • Client Push Driver
  • Client Pull Driver
  • Server Publish Driver
  • Server Subscribe Driver
  • Client Publish Driver
  • Client Subscribe Driver
  • Server Request Driver
  • Server Response Driver
  • Client Request Driver
  • Client Response Driver

Installation

pnpm install nestjs-axon-modules

Usage

Server Push Driver

import { Module } from '@nestjs/common';
import { Worker2Service } from './worker-2.service';
import { DriverAxonPushServerModule } from 'nestjs-axon-modules';

@Injectable()
export class Service1 {
  constructor(private readonly push_driver: DriverAxonPushServerService) {}
  async send() {
    await this.push_driver.send({
      type: 'MESSAGE',
      payload: {
        message: 'Hello World',
      },
    });
  }
}

@Module({
  imports: [
    DriverAxonPushServerModule.forRoot({
      server_name: 'server-1',
      server_address: 'localhost',
      server_port: 3425,
    }),
  ],
  controllers: [],
  providers: [Service1],
})
export class AppModule {}

Client Pull Driver

import { Module } from '@nestjs/common';
import { Worker2Service } from './worker-2.service';
import {
  DriverAxonPullClientModule,
  HandleMessage,
  Message,
} from 'nestjs-axon-modules';

@Injectable()
export class Service1 {
  constructor(private readonly push_driver: DriverAxonPushServerService) {}

  @HandleMessage('MESSAGE')
  async handle(@Message() message: any) {
    console.log(message);
  }
}

@Module({
  imports: [
    DriverAxonPullClientModule.forRoot({
      client_name: 'client-1',
      server_address: 'localhost',
      server_port: 3425,
    }),
  ],
  controllers: [],
  providers: [Service1],
})
export class AppModule {}

Server Pull Driver

import { Module } from '@nestjs/common';
import { Worker2Service } from './worker-2.service';
import {
  DriverAxonPullServerModule,
  HandleMessage,
  Message,
} from 'nestjs-axon-modules';

@Injectable()
export class Service1 {
  constructor(private readonly push_driver: DriverAxonPushServerService) {}

  @HandleMessage('MESSAGE')
  async handle(@Message() message: any) {
    console.log(message);
  }
}

@Module({
  imports: [
    DriverAxonPullServerModule.forRoot({
      server_name: 'server-1',
      server_address: 'localhost',
      server_port: 3425,
    }),
  ],
  controllers: [],
  providers: [Service1],
})
export class AppModule {}

Client Push Driver

import { Module } from '@nestjs/common';
import { Worker2Service } from './worker-2.service';
import { DriverAxonPushClientModule } from 'nestjs-axon-modules';

@Injectable()
export class Service1 {
  constructor(private readonly push_driver: DriverAxonPushServerService) {}
  async send() {
    await this.push_driver.send({
      type: 'MESSAGE',
      payload: {
        message: 'Hello World',
      },
    });
  }
}

@Module({
  imports: [
    DriverAxonPushClientModule.forRoot({
      client_name: 'server-1',
      server_address: 'localhost',
      server_port: 3425,
    }),
  ],
  controllers: [],
  providers: [Service1],
})
export class AppModule {}

Decorators

@HandleMessage(message_type: string)

This method decorator is used to handle messages. Only handles messages of the specified type.

Used in conjunction with the @Message method decorator.

e.g.

@HandleMessage('MESSAGE')
async handle(@Message() message: TMessage) {
  console.log(message);
}

@Message()

This parameter decorator is used to get the message.

Used in conjunction with the @HandleMessage method decorator.

e.g.

@HandleMessage('MESSAGE')
async handle(@Message() message: any) {
  console.log(message);
}

@Payload()

This parameter decorator is used to get the payload of the message.

Used in conjunction with the @HandleMessage method decorator.

e.g.

@HandleMessage('MESSAGE')
async handle(@Payload() payload: any) {
  console.log(payload);
}
0.1.4

5 months ago

0.1.3

5 months ago

0.1.2

5 months ago

0.1.1

5 months ago

0.1.0

5 months ago