0.2.2 • Published 4 days ago

@djeka07/nestjs-azure-service-bus v0.2.2

Weekly downloads
-
License
MIT
Repository
-
Last release
4 days ago

Introduction

NestJS Azure service bus based on @azure/service-bus package. See Examples folder for usage.

Installation

yarn add @djeka07/nestjs-azure-service-bus

Usage

Importing module with only one provider

import { AzureServiceBusModule } from '@djeka07/nestjs-azure-service-bus';

@Module({
  imports: [
    AzureServiceBusModule.forAsyncRoot({
      useFactory: async () => {
        return {
          connectionString: '<your-connection-string>'
          senders: [ // Senders to send messages. Optional if for example if only will recieve messages
              {
                name: '<queue/topic-name>',
                identifier: 'The identifier of the sender' // Optional
              }
            ],
          receivers: [ // Recievers to recieve messages, Optional if only will send messages
              {
                name: '<queue/topic-name>',
                subscription: '<subscription-name>' // Optional, required when using topics
              }
            ],
        };
      },
    }),
  ],
  controllers: [],
  providers: [],
})
export class AModule {}

Importing module with multiple providers

import { AzureServiceBusModule } from '@djeka07/nestjs-azure-service-bus';

@Module({
  imports: [
    AzureServiceBusModule.forAsyncRoot([
      {
        useFactory: async () => {
                return {
                  name: '<provider name>', // When using multiple providers a name need to be set
                  connectionString: '<your-connection-string>'
                  senders: [ // Senders to send messages. Optional if for example if only will recieve messages
                      {
                        name: '<queue/topic-name>',
                        identifier: 'The identifier of the sender' // Optional
                      }
                    ],
                  receivers: [ // Recievers to recieve messages, Optional if only will send messages
                      {
                        name: '<queue/topic-name>',
                        subscription: '<subscription-name>' // Optional, required when using topics
                      }
                    ],
                };
          },
      },
      {
        useFactory: async () => {
          return {
            name: '<provider name>', // When using multiple providers a name need to be set
            connectionString: 'connection string'
            senders: [ // Senders to send messages. Optional if for example if only will recieve messages
                {
                  name: '<queue/topic-name>',
                  identifier: 'The identifier of the sender' // Optional
                }
              ],
            receivers: [ // Recievers to recieve messages, Optional if only will send messages
                {
                  name: '<queue/topic-name>',
                  subscription: '<subscription-name>' // Optional, required when using topics
                }
              ],
          };
        },
      }
    ]),
  ],
  controllers: [],
  providers: [],
})
export class AModule {}

Emitting messages with one provider

import { Controller, Post } from '@nestjs/common';
import { AppService } from './app.service';
import { AzureServiceBusClient } from '@djeka07/nestjs-azure-service-bus';

@Controller()
export class AppController {
  constructor(
    public readonly azureServiceBusClient: AzureServiceBusClient,
    public readonly appService: AppService,
  ) {}

  @Post()
  post(): void {
    this.azureServiceBusClient.emit({
      payload: { body: { test: 'test' } },
      name: '<queue/topic name>',
    });
  }
}

Emitting messages with multiple providers

import { Controller, Post } from '@nestjs/common';
import { AppService } from './app.service';
import { AzureServiceBusClient } from '@djeka07/nestjs-azure-service-bus';

@Controller()
export class AppController {
  constructor(
    @Inject('<provider name>')
    private readonly azureServiceBusClient: AzureServiceBusClient,
    @Inject('provider name')
    private readonly azureServiceBusSecondService: AzureServiceBusClient,
  ) {}

  @Post()
  post(): void {
    this.azureServiceBusClient.emit({
      payload: { body: { test: 'test' } },
      name: '<queue/topic name>',
    });
  }

  @Post('/second')
  post(): void {
    this.azureServiceBusSecondService.emit({
      payload: { body: { test: 'second test' } },
      name: '<queue/topic name>',
    });
  }
}

Reveive messages

import { Subscribe } from '@djeka07/nestjs-azure-service-bus';
import { Injectable } from '@nestjs/common';

@Injectable()
export class TestService {
  @Subscribe({ name: '<queue-name>' })
  onMessage(data) {
    console.log('message one', data);
  }

  @Subscribe({ name: '<topic-name>', subscription: '<subscription-name>' })
  onMessageTwo(data) {
    console.log('message two', data);
  }
}

Reveive messages with multiple providers

import { Subscribe } from '@djeka07/nestjs-azure-service-bus';
import { Injectable } from '@nestjs/common';

@Injectable()
export class TestService {
  @Subscribe({ name: '<queue-name>', provider: '<provider-name>' })
  onMessage(data) {
    console.log('message one', data);
  }

  @Subscribe({
    name: '<topic-name>',
    subscription: '<subscription-name>',
    provider: '<provider-name>',
  })
  onMessageTwo(data) {
    console.log('message two', data);
  }
}

Author

André Ekbom Github

License

Licensed under the MIT License - see the LICENSE file for details.

0.2.1

4 days ago

0.2.2

4 days ago

0.1.32

14 days ago

0.2.0

14 days ago

0.1.30

23 days ago

0.1.31

23 days ago

0.1.10

23 days ago

0.1.11

23 days ago

0.1.12

23 days ago

0.1.13

23 days ago

0.1.14

23 days ago

0.1.15

23 days ago

0.1.27

23 days ago

0.1.28

23 days ago

0.1.29

23 days ago

0.1.20

23 days ago

0.1.21

23 days ago

0.1.22

23 days ago

0.0.10

24 days ago

0.1.23

23 days ago

0.0.11

24 days ago

0.1.24

23 days ago

0.0.12

24 days ago

0.1.25

23 days ago

0.1.26

23 days ago

0.1.0

24 days ago

0.1.2

24 days ago

0.1.1

24 days ago

0.1.16

23 days ago

0.1.8

23 days ago

0.0.9

24 days ago

0.1.17

23 days ago

0.1.7

23 days ago

0.0.8

24 days ago

0.1.18

23 days ago

0.1.19

23 days ago

0.1.9

23 days ago

0.1.4

24 days ago

0.0.5

24 days ago

0.1.3

24 days ago

0.0.4

24 days ago

0.1.6

23 days ago

0.0.7

24 days ago

0.1.5

23 days ago

0.0.6

24 days ago

0.0.3

25 days ago

0.0.2

25 days ago

0.0.1

25 days ago