1.2.4 • Published 3 years ago
@prodevcom/nestjs-pubsub v1.2.4
NestJS GCloud Pub/Sub Transporter
Pacote exclusivo para NestJS para gerenciar filas utilizando Google Pub/Sub
Instalação
$ npm i --save @google-cloud/pubsub @prodevcom/nestjs-pubsub
Configurando Cliente
const options: GCPubSubOptions = {
topic: 'queue',
subscription: 'queue-sub',
client: {
projectId: 'projeto-filas',
keyFilename: './credentials.json'
}
}
const pubsub = new GCPubSubClient(options)
Disparando um Evento
Para este caso, utilizamos o método emit
pois vamos disparar um evento sem necessário esperar o retorno.
const alterar = ({ id, body }) => pubsub.emit('alterar-produto', { id, body })
alterar(123, { nome: 'XBox Series X' })
Disparando uma Mensagem
Para este caso, vamos utilizar o método send
pois necessitados de uma resposta para o cliente final
return pubsub.send('ver-produto', { id: 123 })
Configurando Servidor
const options: GCPubSubOptions = {
topic: 'queue',
subscription: 'queue-sub',
client: {
projectId: 'projeto-filas',
keyFilename: './credentials.json'
}
}
const app = await NestFactory.createMicroservice(ApplicationModule, {
strategy: new GCPubSubServer(options),
});
Recebendo um evento do lado cliente
@MessagePattern('alterar-produto')
update(@Payload() data: any, @Ctx() context: GCPubSubContext) {
this.service.alterarProduto(data.id, data.body)
context.ack() // Usar quando a opcão noAck for false
}
Recebendo uma mensagem do lado cliente
@MessagePattern('ver-produto')
get(@Payload() data: any, @Ctx() context: GCPubSubContext) {
try {
return this.service.get(data.id)
} finally {
context.ack()
}
}
Fonte de origem do código:
Credit by p-fedyukovich/nestjs-google-pubsub-microservice
Este código segue os padrões fornecidos pelo seu pacote original, apenas contendo algumas alterações para atender os padrões de projetos desenvolvidos internamente.
Não nos responsabilizados por bugs ou erros que possam acontecer ao utilizar esta biblioteca.
Dúvidas: support@prodev.com.br