0.0.6 • Published 3 years ago
@gllawuk/nestjs-azure-service-bus v0.0.6
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);
}