Redis
 sql >> Database >  >> NoSQL >> Redis

come utilizzare il microservizio nestjs redis?

Ci sono due lati che devi separare. Possono far parte di un'applicazione nest.js (ad es. applicazione ibrida) o trovarsi in diverse applicazioni nest.js:

Cliente

Il client trasmette messaggi su un argomento/modello e riceve una risposta dai destinatari del messaggio trasmesso.

Per prima cosa, devi connettere il tuo client. Puoi farlo in onModuleInit . In questo esempio, ProductService trasmette un messaggio quando viene creata una nuova entità prodotto.

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

Tieni presente che this.client.send restituisce un Observable . Ciò significa che non accadrà nulla finché non subscribe ad esso (cosa che puoi fare implicitamente chiamando toPromise() ).

Gestione pattern

Il gestore del pattern consuma i messaggi e invia una risposta al 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`;
  }

Naturalmente, un gestore di parametri potrebbe anche essere un client e quindi ricevere e trasmettere messaggi.