Redis
 sql >> Base de données >  >> NoSQL >> Redis

comment utiliser le microservice nestjs redis ?

Il y a deux côtés que vous devez séparer. Ils peuvent faire partie d'une application nest.js (par exemple, une application hybride) ou se trouver dans plusieurs applications nest.js différentes :

Client

Le client diffuse des messages sur un sujet/modèle et reçoit une réponse du ou des destinataires du message diffusé.

Tout d'abord, vous devez connecter votre client. Vous pouvez le faire dans onModuleInit . Dans cet exemple, ProductService diffuse un message lorsqu'une nouvelle entité produit est créée.

@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;
  }
}

Gardez à l'esprit que this.client.send renvoie un Observable . Cela signifie que rien ne se passera tant que vous n'aurez pas subscribe (ce que vous pouvez implicitement faire en appelant toPromise() ).

Gestionnaire de modèles

Le gestionnaire de modèles consomme des messages et renvoie une réponse au client.

@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`;
  }

Bien entendu, un gestionnaire de paramètres peut également être un client et ainsi recevoir et diffuser des messages.