Azure Service Bus

Absolutely! Here's a great starting structure for a GitBook page explaining your Azure Service Bus integration.


Azure Service Bus Integration

This guide explains how to configure and use Azure Service Bus in your messaging-based application using @nestjstools/messaging.


📦 Installation

Make sure you’ve installed the following dependencies:

npm install @nestjstools/messaging @nestjstools/messaging-azure-service-bus-extension
or
yarn add @nestjstools/messaging @nestjstools/messaging-azure-service-bus-extension

🛠️ Channel Configuration

Basic Setup queue

channels: [
  new AzureServiceBusChannelConfig({
    name: 'azure-channel',
    connectionString: 'Endpoint=sb://your-namespace.servicebus.windows.net/;SharedAccessKeyName=...;',
    queue: 'your-queue-name',
    autoCreate: false, // Requires admin permission
    enableConsumer: true,
  }),
],

Topic/Subscription Example

channels: [
  new AzureServiceBusChannelConfig({
    name: 'azure-pubsub-channel',
    connectionString: 'Endpoint=sb://your-namespace.servicebus.windows.net/;SharedAccessKeyName=...;',
    topic: 'your-topic',
    subscription: 'your-subscription',
    mode: Mode.TOPIC,
    autoCreate: true,
    enableConsumer: true,
  }),
],

⚙️ Config Options

Property
Description
Default

name

Internal channel name

connectionString

Azure Service Bus connection string

queue

Queue name (required for Mode.QUEUE)

topic

Topic name (required for Mode.TOPIC)

subscription

Subscription name (required for Mode.TOPIC)

mode

'queue' or 'topic'

'queue'

autoCreate

Auto-create queue/topic/subscription (requires admin permissions)

false

enableConsumer

Enable message receiving

true


📤 Dispatching a Message

import { Controller, Get } from '@nestjs/common';
import { CreateUser } from './application/command/create-user';
import { IMessageBus, MessageBus, RoutingMessage } from '@nestjstools/messaging';

@Controller()
export class AppController {
  constructor(
    @MessageBus('azure.bus') private azureMessageBus: IMessageBus,
  ) {}

  @Get('/azure')
  createUser(): string {
    this.azureMessageBus.dispatch(
      new RoutingMessage(
        new CreateUser('John FROM Azure bus'),
        'my_app_command.create_user',
      ),
    );

    return 'Message sent';
  }
}

✅ Tips

  • autoCreate works only if the channel has enableConsumer = true and the connection string has management permissions.

  • Use mode: Mode.TOPIC only when using topic and subscription.

Last updated