0.2.5 • Published 3 years ago

@sawakaga/nestjs-amqplib v0.2.5

Weekly downloads
3
License
MIT
Repository
github
Last release
3 years ago

This source code forked from semi-dead useful repository nestjsx/nestjs-amqp authored and maintained by @bashleigh

This repository intents to bring full functionality of amqplib to nestjs module base.

Install

$ npm install --save sawakaga/nestjs-amqp

Basic usage

import { Module } from '@nestjs/common';
import { AmqpModule } from 'nestjs-amqp';

@Module({
  imports: [
    AmqpModule.forRoot({
      name: 'rabbitmq',
      hostname: 'localhost',
      port: 5672,
      username: 'test',
      password: 'test',
    }),
  ],
})
export default class AppModule {}

Connection Decorators

import { Module } from '@nestjs/common';
import { AmqpModule } from 'nestjs-amqp';

@Module({
  imports: [
    AmqpModule.forRoot([
      {
        hostname: 'test:test@localhost',
      },
      {
        username: 'test',
        password: 'test',
        hostname: 'localhost',
        port: 5672,
        protocol: 'amqps',
        name: 'test',
      },
    ]),
  ],
})
export default class ExecutionModule {}
import { Injectable } from '@nestjs/common';
import { InjectAmqpConnection } from 'nestjs-amqp';

@Injectable()
export default class TestService {
  constructor(
    @InjectAmqpConnection('test') private readonly connectionTest, //gets connection with name 'test' defined in module
    @InjectAmqpConnection(0) private readonly connection0, //gets first defined connection without a name
  ) {}
}

Use InjectAmqpConnection without a parameter for default connection

Example publish

import { Injectable, Logger } from '@nestjs/common';
import { InjectAmqpConnection } from 'nestjs-amqp';

@Injectable()
export default class TestProvider {
  constructor(@InjectAmqpConnection() private readonly amqp) {}
  async publish(message: string) {
    await this.amqp.createChannel((err, channel) => {
      if (err != null) {
        Logger.alert(err, 'TestProvider');
      }
      channel.assertQueue('test_queue_name');
      channel.sendToQueue('test_queue_name', message);
    });
  }
}

More information and examples about amqplib can be found here.

Available Options

NameForDefault
hostnameThe host url for the connectionlocalhost
portThe port of the amqp host5672
nameThe name of the connectiondefault or the array key index [0]
retrysThe amount of retry attempts before surrender3
retryDelayThe amount of milliseconds to wait before attempting retry3000
protocolThe protocol for the connectionamqp
usernameThe username for the connectionquest
passwordThe password for the connectionquest
localeThe desired locale for error messagesen_US
frameMaxThe size in bytes of the maximum frame allowed over the connection0
heartbeatThe period of the connection heartbeat in seconds0
vhostWhat VHost shall be used/

Testing this package

$ jest