0.0.60 • Published 3 years ago

nestjs-message-bus v0.0.60

Weekly downloads
-
License
-
Repository
github
Last release
3 years ago

Project Title

Nest-Js Message Bus

Description

Message Bus implementation as a nest js module. As of now it supports sync and cloud-task transport.

Setup

Import MessageBusModule with following configuration

@Module({
  imports: [
    MessageBusModule.register({
      transport: 'cloud-task',
      cloudTask: {
        defaultQueue: 'default',
        project: '',
        region: '',
        serviceAccountEmail: ''
        workerHostUrl: process.env.HOST + '/cloud-task-worker'
    })
  ]
})

Setup up a worker for cloud task, worker url must be same as workerHostUrl which is configured above.

@Controller()
export class WorkerController {

  constructor(
    private readonly worker: Worker, 
    private readonly receiver: CloudTaskReceiver,
  ) {}

  @Post('/cloud-task-worker')
  async runWorker() {
    await this.worker.run(this.receiver);
  }

}

Usage

Create a message and associated handler.

  • Message Handler is called immediately if sync transport is used.
  • Message Handler call is deferred (queued) using google cloud task service if cloud-task transport is used.
export class ExampleMessage implements IMessage {
  constructor(public readonly body: string) {}
}


@MessageHandler(ExampleMessage)
export class ExampleMessageHandler implements IMessageHandler<ExampleMessage> {
  execute(message: ExampleMessage): Promise<void> {
    return Promise.resolve();
  }
}


@Injectable()
export class SomeService {
  constructor(
    private readonly messageBus: MessageBus,
  ) { }

  async exampleMethod() {
    await this.messageBus.dispatch(
      new ExampleMessage('content..'),
    );
  }

}

Delayed Delivery

There are times when message execution must occur at a later time. Delaying a message is done using DelayLabel. Simply add a delay label with delay time in seconds when dispatching.

await this.messageBus.dispatch(
  new ExampleMessage('content..'), [
    new DelayLabel(600),
  ],
)

ExampleMessage will be delivered after 10 minutes delay. Max supported delay depends on the transport you're using.

Testing

npm run test
0.0.60

3 years ago

0.0.51

3 years ago

0.0.52

3 years ago

0.0.50

3 years ago

0.0.40

3 years ago

0.0.38

3 years ago

0.0.39

3 years ago

0.0.23

3 years ago

0.0.24

3 years ago

0.0.25

3 years ago

0.0.37

3 years ago

0.0.30

3 years ago

0.0.31

3 years ago

0.0.32

3 years ago

0.0.34

3 years ago

0.0.35

3 years ago

0.0.36

3 years ago

0.0.26

3 years ago

0.0.27

3 years ago

0.0.28

3 years ago

0.0.29

3 years ago

0.0.21

3 years ago

0.0.22

3 years ago

0.0.20

3 years ago

0.0.12

3 years ago

0.0.13

3 years ago

0.0.14

3 years ago

0.0.15

3 years ago

0.0.17

3 years ago

0.0.19

3 years ago

0.0.10

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago