Redis
 sql >> база данни >  >> NoSQL >> Redis

как да използвам nestjs redis microservice?

Има две страни, които трябва да разделите. Те могат да бъдат част от едно nest.js приложение (напр. хибридно приложение) или да бъдат в няколко различни nest.js приложения:

Клиент

Клиентът излъчва съобщения по тема/модел и получава отговор от получателя(ите) на излъченото съобщение.

Първо, трябва да свържете своя клиент. Можете да направите това в onModuleInit . В този пример ProductService излъчва съобщение, когато се създаде нов продукт.

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

Имайте предвид, че this.client.send връща Observable . Това означава, че нищо няма да се случи, докато не subscribe към него (което можете имплицитно да направите, като извикате toPromise() ).

Манипулатор на шаблони

Манипулаторът на шаблона консумира съобщения и изпраща отговор обратно на клиента.

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

Разбира се, манипулаторът на параметри може също да бъде клиент и с това да получава и изпраща съобщения.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да увеличим производителността на Redis, когато процесорът е 100%? Раздробяване? Най-бързият .Net клиент?

  2. Планиране на задачи за целина с голямо ETA

  3. Изключение за изчакване след асинхронни команди и Task.WhenAny чака в StackExchange.Redis

  4. Данни за пакетен набор от речник в Redis

  5. Може ли Redis да пише в база данни като PostgreSQL?