sql >> Databasteknik >  >> NoSQL >> Redis

hur använder man nestjs redis microservice?

Det finns två sidor du måste separera. De kan vara en del av en nest.js-applikation (t.ex. hybridapplikation) eller vara i flera olika nest.js-applikationer:

Kund

Klienten sänder meddelanden om ett ämne/mönster och får ett svar från mottagaren/mottagarna av det sända meddelandet.

Först måste du ansluta din klient. Du kan göra det i onModuleInit . I det här exemplet, ProductService sänder ett meddelande när en ny produktenhet skapas.

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

Tänk på att this.client.send returnerar en Observable . Det betyder att ingenting kommer att hända förrän du subscribe till det (vilket du implicit kan göra genom att anropa toPromise() ).

Mönsterhanterare

Mönsterhanteraren förbrukar meddelanden och skickar ett svar tillbaka till klienten.

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

Naturligtvis kan en paramhanterare också vara en klient och därmed både ta emot och sända meddelanden.




  1. Hur man ställer in hanterare i RedMQ från händelser som tagits upp i min domän

  2. Skapa testdata för MongoDB

  3. Java Mongodb nummerlång fråga

  4. Mongodb-tjänsten startar inte