Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

como usar o microsserviço nestjs redis?


Existem dois lados que você precisa separar. Eles podem fazer parte de um aplicativo nest.js (por exemplo, aplicativo híbrido) ou estar em vários aplicativos nest.js diferentes:

Cliente


O cliente transmite mensagens em um tópico/padrão e recebe uma resposta do(s) receptor(es) da mensagem transmitida.

Primeiro, você precisa conectar seu cliente. Você pode fazer isso em onModuleInit . Neste exemplo, ProductService transmite uma mensagem quando uma nova entidade de produto é criada.
@Injectable()
export class ProductService implements OnModuleInit {

  @Client({
    transport: Transport.REDIS,
    options: {
      url: 'redis://localhost:6379',
    },
  })
  private client: ClientRedis;

  async onModuleInit() {
    // Connect your client to the redis server on startup.
    await this.client.connect();
  }

  async createProduct() {
    const newProduct = await this.productRepository.createNewProduct();
    // Send data to all listening to product_created
    const response = await this.client.send({ type: 'product_created' }, newProduct).toPromise();
    return response;
  }
}

Lembre-se de que this.client.send retorna um Observable . Isso significa que nada acontecerá até você subscribe para ele (o que você pode fazer implicitamente chamando toPromise() ).

Gerenciador de padrões


O manipulador de padrões consome mensagens e envia uma resposta de volta ao cliente.
@Controller()
export class NewsletterController {

  @MessagePattern({ type: 'product_created' })
  informAboutNewProduct(newProduct: ProductEntity): string {
    await this.sendNewsletter(this.recipients, newProduct);
    return `Sent newsletter to ${this.recipients.length} customers`;
  }

Obviamente, um manipulador de parâmetros também pode ser um cliente e, com isso, receber e difundir mensagens.