sql >> Base de Datos >  >> NoSQL >> Redis

¿Cómo usar el microservicio nestjs redis?

Hay dos lados que necesitas separar. Pueden ser parte de una aplicación nest.js (por ejemplo, una aplicación híbrida) o estar en varias aplicaciones nest.js diferentes:

Cliente

El cliente transmite mensajes sobre un tema/patrón y recibe una respuesta de los receptores del mensaje transmitido.

Primero, tienes que conectar tu cliente. Puedes hacerlo en onModuleInit . En este ejemplo, ProductService transmite un mensaje cuando se crea una nueva entidad de producto.

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

Tenga en cuenta que this.client.send devuelve un Observable . Esto significa que no pasará nada hasta que subscribe a él (lo que puede hacer implícitamente llamando a toPromise() ).

Controlador de patrones

El controlador de patrones consume mensajes y envía una respuesta al 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`;
  }

Por supuesto, un controlador de parámetros también podría ser un cliente y, por lo tanto, recibir y transmitir mensajes.