घटनाएं क्या हैं?
घटनाएं संकेत या सूचनाएं हैं जो इंगित करती हैं कि कोई कार्रवाई या स्थिति में परिवर्तन हुआ है। अनुप्रयोगों के संदर्भ में, घटनाएँ सिस्टम के विभिन्न हिस्सों को अतुल्यकालिक और वियुग्मित तरीके से संचार करने की अनुमति देती हैं। यह विशेष रूप से माइक्रोसर्विसेज आर्किटेक्चर में उपयोगी है, जहां आपको स्वतंत्र रूप से कार्य करने के लिए घटकों की आवश्यकता होती है लेकिन फिर भी आप सिस्टम में कहीं और हो रहे परिवर्तनों को "सुनने" और प्रतिक्रिया करने में सक्षम होते हैं।
NestJS में कार्यक्रम
नेस्टजेएस में, इवेंट को लागू करना इवेंटएमिटर2 लाइब्रेरी का उपयोग करके सरल और सहज तरीके से किया जाता है, जो अधिक सुविधाओं के साथ मूल नोड.जेएस इवेंटएमिटर का विस्तार है। आगे, आइए देखें कि NestJS में ईवेंट को कैसे कॉन्फ़िगर और उपयोग करें।
NestJS में ईवेंट कॉन्फ़िगर करना
सबसे पहले, आपको @nestjs/event-emitter पैकेज इंस्टॉल करना होगा, जो NestJS के साथ EventEmitter2 का पूर्ण एकीकरण प्रदान करता है:
npm install @nestjs/event-emitter
पैकेज स्थापित करने के बाद, अपने एप्लिकेशन के मुख्य मॉड्यूल में EventEmitterModule मॉड्यूल आयात करें:
import { Module } from '@nestjs/common'; import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ EventEmitterModule.forRoot(), // Importando o EventEmitterModule // outros módulos ], }) export class AppModule {}
मॉड्यूल कॉन्फ़िगर होने के साथ, आप अपने एप्लिकेशन में ईवेंट बनाना और प्रबंधित करना शुरू कर सकते हैं।
इवेंट बनाना और जारी करना
आइए एक बुनियादी उदाहरण बनाएं जहां एक नया उपयोगकर्ता बनने पर एक ईवेंट उत्सर्जित होता है।
1. एक ईवेंट बनाएं:
सबसे पहले, हम अपने ईवेंट का प्रतिनिधित्व करने के लिए एक वर्ग को परिभाषित करते हैं:
export class UserCreatedEvent { constructor( public readonly userId: string, public readonly email: string, ) {} }
2. घटना का उत्सर्जन:
उस सेवा में जहां उपयोगकर्ता निर्माण तर्क लागू किया जाता है, आप उपयोगकर्ता बनने के बाद ईवेंट उत्सर्जित कर सकते हैं:
import { Injectable } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { UserCreatedEvent } from './events/user-created.event'; @Injectable() export class UserService { constructor(private readonly eventEmitter: EventEmitter2) {} async createUser(email: string) { // Lógica para criar o usuário const userId = '12345'; // Exemplo de ID gerado // Emitir o evento const event = new UserCreatedEvent(userId, email); this.eventEmitter.emit('user.created', event); } }
यहां जब भी कोई नया उपयोगकर्ता बनाया जाता है तो user.created ईवेंट उत्सर्जित होता है।
घटनाओं को सुनना और उन पर प्रतिक्रिया देना
उत्सर्जित घटनाओं पर प्रतिक्रिया करने के लिए, आप श्रोता बना सकते हैं, जो फ़ंक्शन या विधियां हैं जिन्हें संबंधित घटना ट्रिगर होने पर कॉल किया जाएगा।
1. एक श्रोता बनाना:
श्रोता एक ऐसा वर्ग है जो किसी विशिष्ट घटना पर प्रतिक्रिया करता है:
import { OnEvent } from '@nestjs/event-emitter'; import { Injectable } from '@nestjs/common'; import { UserCreatedEvent } from './events/user-created.event'; @Injectable() export class UserCreatedListener { @OnEvent('user.created') handleUserCreatedEvent(event: UserCreatedEvent) { console.log('Usuário criado com sucesso:', event.userId, event.email); // Lógica adicional, como enviar um e-mail de boas-vindas } }
2. श्रोता का पंजीकरण:
NestJS को श्रोता को पहचानने के लिए, इसे संबंधित मॉड्यूल में पंजीकृत होना चाहिए:
import { Module } from '@nestjs/common'; import { UserService } from './user.service'; import { UserCreatedListener } from './listeners/user-created.listener'; @Module({ providers: [UserService, UserCreatedListener], }) export class UserModule {}
अब, हर बार जब user.created इवेंट उत्सर्जित होता है, तो HandleUserCreatedEvent विधि को कॉल किया जाएगा।
उन्नत इवेंट अनुप्रयोग
इवेंट का उपयोग एप्लिकेशन आर्किटेक्चर को बेहतर बनाने के लिए विभिन्न परिदृश्यों में किया जा सकता है:
निष्कर्ष
NestJS में ईवेंट का उपयोग करना मॉड्यूलर, स्केलेबल और आसानी से बनाए रखने वाले सिस्टम बनाने का एक शक्तिशाली तरीका है। EventEmitter2 के साथ एकीकरण के माध्यम से, NestJS ईवेंट बनाना, उत्सर्जित करना और सुनना आसान बनाता है, जिससे आप ईवेंट-संचालित आर्किटेक्चर को सरल और प्रभावी ढंग से कार्यान्वित कर सकते हैं। चाहे माइक्रोसर्विसेज के बीच संचार के लिए या अतुल्यकालिक प्रसंस्करण के लिए, इवेंट किसी भी NestJS डेवलपर के शस्त्रागार में एक आवश्यक उपकरण हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3