sql >> データベース >  >> NoSQL >> Redis

nestjs redisマイクロサービスの使用方法は?

    分離する必要がある2つの側面があります。これらは、1つの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. mongodbは検索クエリで文字列として_idを取得します

    2. Python3.4.1クライアントのcharbプレフィックスについてredisに接続します

    3. SSL用の自己署名証明書を使用してMongoDBをRubyに接続する

    4. Redis-ユーザー名、パスワード、データベース?