@mahdijz5/nestjs-amqp-advanced
v1.1.6
Published
NestJS RabbitMQ Advanced Config is a custom package designed to extend the capabilities of NestJS for integrating with RabbitMQ. While NestJS provides basic RabbitMQ integration through the @nestjs/microservices package, this custom package offers advance
Downloads
1
Readme
NestJS RabbitMQ Advanced Config
Description
NestJS Amqp Advanced Config is a custom package designed to extend the capabilities of NestJS for integrating with RabbitMQ. While NestJS provides basic RabbitMQ integration through the @nestjs/microservices
package, this custom package offers advanced configuration options for users who require more flexibility and control over their RabbitMQ setup.
Features
- Advanced Configuration Options: Customize exchange types, declare and bind queues with specific options, configure message acknowledgment modes, and more.
- Flexible Setup: Easily integrate RabbitMQ into your NestJS application with advanced configuration tailored to your specific use cases.
- Comprehensive Documentation: Detailed documentation and examples to guide you through the setup process and demonstrate the usage of advanced features.
- Message Pattern Definition: Define message patterns for methods to be consumed through queues.
- Access to amqplib Features: Utilize features provided by the amqplib library directly within your NestJS application.
Installation
npm install @mahdijz5/nestjs-amqp-advanced
Setup
import { Module } from '@nestjs/common';
import { AmqpModule } from '@mahdijz5/nestjs-amqp-advanced';
@Module({
imports: [
AmqpModule.forRoot({
// configuration options here
}),
],
})
export class AppModule {}
Configuration Options
Exchange Types: Define exchange types such as direct, fanout, topic, headers, etc. Queue Declaration and Binding: Declare queues with specific options and bind them to exchanges. Connection Options: Configure connection settings including host, port, credentials, etc.
Example
@Module({
imports: [
AmqpModule.forRoot({
exchanges: [
{ name: "exchange-1", type: "topic" }
],
queues: [
{ name: "queue-1", options: {} },
{ name: "queue-2", options: { autoDelete: true } },
],
bindings: [
{ exchange: "exchange-1", queue: "queue-1", pattern: "queue.*" }
],
connection: {
host: "127.0.0.1",
port: 5672,
password: "rabbitmq_password",
username: "rabbitmq_username"
},
})
],
controllers: [UserController],
providers: [UserService],
})
export class UserModule { }
Setting Message pattern
The @MessagePattern decorator defines message patterns for methods to be consumed through queues.
@Controller()
export class UserController {
constructor(private readonly userService: UserService) {}
@MessagePattern("login")
getHello(data: any): string {
// logic ...
}
}
Send Message
Send to queue
await this.amqpService.send("login", "queue-1", { ...payload }, { subscribe: true })
Publish Message
await this.amqpService.publish({payload,exchange,messagePattern ,routingKey,options : {subscribe :true}})
Contributions
Contributions, bug reports, and feature requests are welcome! Feel free to open issues or pull requests on GitHub.