У меня два микросервиса. Первый микросервис - это передний сервер, который запрашивает некоторую работу в одном из вторых экземпляров микросервиса. Отличное решение для транспорта NATS - это организация очередей. Я могу отправить сообщение, и NATS отправит его только одному из экземпляров. Но что, если мне нужно отправить сообщение или событие для каждого экземпляра очереди?
Фронт сервис:
//module
providers: [
...,
{
provide: 'CLIENT_PROXY_FACTORY',
useFactory: (configService: ConfigService) => {
return ClientProxyFactory.create(configService.get('microservice'));
},
inject: [ConfigService],
}
],
// service
constructor(
@Inject('CLIENT_PROXY_FACTORY')
private nats: ClientProxy,
) {
}
// in some method
method() {
this.nats.emit('test', 0);
this.nats.send('test1', true).toPromise();
}
Служба рабочего:
// bootstrap
transport: Transport.NATS,
options: {
url: 'nats://127.0.0.1:4222',
queue: 'worker'
}
// controller
@MessagePattern('test')
messagefunc() {
console.log('Got message!');
}
@EventPattern('test1')
eventfunc() {
console.log('Got event!');
}
Так. В моем примере мне нужно создать 2 или более экземпляров Worker service
. И мне нужно решение, как иногда доставлять события или сообщения всем Worker service
экземплярам?