Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

bagaimana cara menggunakan layanan mikro nestjs redis?

Ada dua sisi yang perlu Anda pisahkan. Mereka dapat menjadi bagian dari satu aplikasi nest.js (mis. aplikasi hybrid) atau berada di beberapa aplikasi nest.js yang berbeda:

Klien

Klien menyiarkan pesan pada topik/pola dan menerima respons dari penerima pesan yang disiarkan.

Pertama, Anda harus menghubungkan klien Anda. Anda dapat melakukannya di onModuleInit . Dalam contoh ini, ProductService menyiarkan pesan saat entitas produk baru dibuat.

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

Perlu diingat, bahwa this.client.send mengembalikan Observable . Artinya, tidak akan terjadi apa-apa sampai Anda subscribe untuk itu (yang secara implisit dapat Anda lakukan dengan memanggil toPromise() ).

Penangan Pola

Pengendali pola menggunakan pesan dan mengirim tanggapan kembali ke klien.

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

Tentu saja, param handler juga bisa menjadi klien dan dengan demikian menerima dan menyiarkan pesan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat menemukan modul 'socket.io/node_modules/redis'

  2. Bagaimana cara menghancurkan pekerjaan yang diantrekan oleh pekerja resque?

  3. Apakah Action Cable 5 memerlukan Redis?

  4. Bisakah celery celerybeat menggunakan Penjadwal Database tanpa Django?

  5. Mendiagnosis kegagalan redis-server yang tidak terduga