sql >> Databáze >  >> NoSQL >> Redis

jak používat mikroslužbu nestjs redis?

Jsou dvě strany, které musíte oddělit. Mohou být součástí jedné aplikace nest.js (např. hybridní aplikace) nebo mohou být součástí několika různých aplikací nest.js:

Klient

Klient vysílá zprávy na téma/vzor a přijímá odpověď od příjemce (příjemců) vysílané zprávy.

Nejprve musíte připojit svého klienta. Můžete to udělat v onModuleInit . V tomto příkladu ProductService vysílá zprávu, když je vytvořena nová entita produktu.

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

Mějte na paměti, že this.client.send vrátí Observable . To znamená, že se nic nestane, dokud se subscribe k němu (což můžete implicitně provést voláním toPromise() ).

Obslužný program vzoru

Obslužný program vzoru spotřebovává zprávy a odešle odpověď zpět klientovi.

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

Samozřejmě, že obslužná rutina param může být také klientem a tím přijímat i vysílat zprávy.




  1. Python redis předplatitel nemůže získat všechna data?

  2. Sledování využití paměti MongoDB

  3. Jak zjistit, zda je sidekiq připojen k serveru redis?

  4. Dotaz IDE pro MongoDB?