0.0.60 • Published 4 years ago

nestjs-message-bus v0.0.60

Weekly downloads
-
License
-
Repository
github
Last release
4 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

4 years ago

0.0.51

4 years ago

0.0.52

4 years ago

0.0.50

4 years ago

0.0.40

4 years ago

0.0.38

4 years ago

0.0.39

4 years ago

0.0.23

4 years ago

0.0.24

4 years ago

0.0.25

4 years ago

0.0.37

4 years ago

0.0.30

4 years ago

0.0.31

4 years ago

0.0.32

4 years ago

0.0.34

4 years ago

0.0.35

4 years ago

0.0.36

4 years ago

0.0.26

4 years ago

0.0.27

4 years ago

0.0.28

4 years ago

0.0.29

4 years ago

0.0.21

4 years ago

0.0.22

4 years ago

0.0.20

4 years ago

0.0.12

4 years ago

0.0.13

4 years ago

0.0.14

4 years ago

0.0.15

4 years ago

0.0.17

4 years ago

0.0.19

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago