sql >> Database >  >> NoSQL >> Redis

hoe nestjs redis microservice te gebruiken?

Er zijn twee kanten die je moet scheiden. Ze kunnen deel uitmaken van één nest.js-applicatie (bijv. hybride applicatie) of in meerdere verschillende nest.js-applicaties:

Klant

De client zendt berichten uit over een onderwerp/patroon en ontvangt een reactie van de ontvanger(s) van het uitgezonden bericht.

Eerst moet u uw klant verbinden. U kunt dat doen in onModuleInit . In dit voorbeeld ProductService zendt een bericht uit wanneer een nieuwe productentiteit wordt gemaakt.

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

Houd er rekening mee dat this.client.send retourneert een Observable . Dit betekent dat er niets gebeurt totdat u zich subscribe ernaartoe (wat u impliciet kunt doen door toPromise() . aan te roepen ).

Patroon Handler

De patroonbehandelaar gebruikt berichten en stuurt een reactie terug naar de klant.

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

Natuurlijk kan een param-handler ook een client zijn en daarmee zowel berichten ontvangen als uitzenden.




  1. Mongo converteert ingesloten document naar array

  2. vraag terug op basis van datum

  3. Grote objecten cachen met Redis-cache

  4. MongoDB GUI-client (platformonafhankelijk of Linux)