0.0.6 • Published 2 years ago

@gllawuk/nestjs-azure-service-bus v0.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

NestJS Azure Service Bus

NestJS custom transport for Azure Service Bus.

Installation

$ npm install @gllawuk/nestjs-azure-service-bus --save

Overview

const app = await NestFactory.createMicroservice<MicroserviceOptions>(
  AppModule,
  {
    strategy: new AzureServiceBusServer({
      connectionString:
        'Endpoint=sb://<Name>.servicebus.windows.net/;SharedAccessKeyName=<SharedAccessKeyName>;SharedAccessKey=<SharedAccessKey>',
    }),
  },
);

Client

@Module({
  imports: [
    ClientsModule.register([
      {
        name: 'SB_SERVICE',
        customClass: AzureServiceBusClient,
        options: {
          connectionString:
        'Endpoint=sb://<Name>.servicebus.windows.net/;SharedAccessKeyName=<SharedAccessKeyName>;SharedAccessKey=<SharedAccessKey>',
        },
      },
    ]),
  ]
  ...
})
@Injectable()
constructor(
  @Inject('SB_SERVICE') private readonly sbClient: ClientProxy,
) {}

Message-based (Request/Response)

Producer:

const pattern = 'sbq-default'; // queue name is 'sbq-default.reply'
const data = 'Example message';
this.sbClient.send(pattern, data).subscribe((response) => {
  console.log(response); // reply message
});

Consumer:

const pattern = 'sbq-default'; // queue name
@MessagePattern(pattern)
handleMessage(@Payload() data) {
  console.log(data);
  return 'Example reply message';
}

Event-based

Producer:

const pattern = 'sbq-default'; // queue name
const data = 'Example message';
this.sbClient.emit(pattern, data);

Consumer:

const pattern = 'sbq-default'; // queue name
@EventPattern('sbq-default')
async handleEvent(data) {
  console.log(data);
}