@cubiles/nestjs-message-broker
v11.5.0
Published
The idea behind this module is to connect it to a message broker that enables the permanent distribution of messages.
Maintainers
Readme
Message Broker for NestJs
A CloudEvents-compliant message broker for NestJS with flexible adapter architecture (e.g. RabbitMQ) for decoupling infrastructure and logic.
Install
$ npm i @cubiles/nestjs-message-brokerFeatures
- ✅ CloudEvents-compliant
- ✅ minimal configuration
- ✅ Supplementable of asyncapi
- ✅ auto-retry of messages
Adapters
| Support | Message-Broker | Docker-Image |
|-----------------|----------------|---------------------------------------------|
| ✅ in planning | InMemory | |
| 🟦️ in planning | Redis | |
| ✅ Supported | RabbitMQ | heidiks/rabbitmq-delayed-message-exchange |
Example
Code
@Module({
imports: [
MessageBrokerModule.forRoot({
adapter: new RabbitMqAdapter({
namespace: 'test',
url: {
password: 'guest',
username: 'guest',
hostname: 'localhost',
port: 5672,
},
}),
default: {
source: 'com',
},
}),
],
providers: [AppService],
exports: [AppService],
})
export class AppModule {
}
@CloudEventDefinition({
type: 'com.orders.created',
source: 'order-service',
})
export class OrderCreatedEvent {
constructor(
public readonly orderId: string,
public readonly amount: number,
) {
}
}
import { MessageBrokerService } from './message-broker.service';
@Injectable()
export class AppService {
constructor(
@Inject()
private readonly messageBroker: MessageBrokerService,
) {
}
@OnCloudEvent(OrderCreatedEvent)
async handleOrderCreated(event: CloudEvent<OrderCreatedEvent>) {
console.log('New order', event);
}
async sendMessages() {
const event = new OrderCreatedEvent('42', 23);
await this.messageBroker.publish(event);
}
}