🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

@bashleigh/nestjs-amqp

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bashleigh/nestjs-amqp

RabbitMQ service for nestjs

0.0.2
latest
Source
npm
Version published
Weekly downloads
0
-100%
Maintainers
1
Weekly downloads
 
Created
Source

Nestjs AMQP

An amqp connection service for nestjs.

Install

tests

TODO

  • Manage multiple connections
  • Add configuration data
  • Add locallaised config via inject or however nestjs prefers
  • Close connection on termination
  • Retry connection on failure
  • Make documentation in readme easier to follow
  • Add examples
import {
    Module,
} from '@nestjs/common';
import ConfigModule from '@bashleigh/nest-config';

@module({
    imports: [ConfigModule, AmqpModule.forRoot([
        {
            host: 'amqp://test:test@localhost',
        }, 
        {
            username: 'test',
            password: 'test',
            host: 'localhost',
            port: 5672,
            ssl: true,
            name: 'test',
        }
    ])],
})
export default class TestModule {
}

Alternatively use the env method AMQP_URL=amqp://test@test:localhost:5672

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

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

Use InjectAmqpConnection without a parameter for default connection

Future implementation

So far this package manages multiple AMQP connections using the nestjs container and inject them into other providers.
Alternatively I'd like to implement something like this:

import {
    Injectable,
} from '@nestjs/common';
import {
    AmqpConnection,
    Consume,
    Publish,
    Message,
} from '@bashleigh/nestjs-amqp';

@Injectable()
@AmqpConnection()
export default class MyAmqpService {
   
    @Consume("queue_name", {
        noAck: true,
    })
    async listen(@Message message) {
        console.log('Message received', message);
        
        //send a message back
        this.publish();
    }

    @Publish("queue_name")
    async publish() {
        return "Send this to 'queue queue_name'";
    }
}

Then using executable context


import { NestFactory } from '@nestjs/core';
import QueueModule, { MyAmqpService } from './queue';

async function bootstrap() {
  const app = await NestFactory.create(QueueModule);
  const event = app.get(MyAmqpService);

  await event.listen();

}
bootstrap();

process.stdin.resume();

Or something similar to the above is what I'd like to implement

Keywords

nestjs

FAQs

Package last updated on 10 Jul 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts