@bashleigh/nestjs-amqp
v0.0.2 nestjs amqp
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
npm i @bashleigh/nestjs-amqp
Source Code
github.com/bashleigh/nestjs-...Metadata
- MIT
- Whatever
- Unknown
- released 7/10/2018