"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > अपनी अधिसूचना और कार्य प्रबंधन को केंद्रीकृत करें

अपनी अधिसूचना और कार्य प्रबंधन को केंद्रीकृत करें

2024-11-08 को प्रकाशित
ब्राउज़ करें:232

Centralize your notification and job handling

विभिन्न घटनाओं (जैसे उपयोगकर्ता निर्माण, पासवर्ड रीसेट इत्यादि) के बाद एकाधिक ईमेल अधिसूचनाएं भेजना आसान बनाने के लिए, आप अपनी अधिसूचना और कार्य प्रबंधन को केंद्रीकृत करने के लिए कुछ कदम उठा सकते हैं। यह दृष्टिकोण प्रत्येक ईवेंट के लिए अलग कार्य या अधिसूचना बनाए बिना आपके काम को आसान और अधिक स्केलेबल बना देगा।

ईमेल अधिसूचना प्रबंधन को सरल बनाने की रणनीतियाँ:

  1. सामान्यीकृत ईमेल अधिसूचना कार्य का उपयोग करें
  2. इवेंट-श्रोता आर्किटेक्चर का लाभ उठाएं
  3. समूह समान सूचनाएं

1. एक सामान्यीकृत ईमेल अधिसूचना कार्य बनाएं:

प्रत्येक अधिसूचना के लिए अलग-अलग नौकरियां बनाने के बजाय, आप एक एकल पुन: प्रयोज्य नौकरी बना सकते हैं जो अधिसूचना और उपयोगकर्ता को पैरामीटर के रूप में लेती है। इस तरह, एक ही कार्य का उपयोग विभिन्न सूचनाओं को संभालने के लिए किया जा सकता है।

सामान्यीकृत ईमेल अधिसूचना नौकरी:

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Notifications\Notification;
use App\Models\User;

class SendEmailNotificationJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public $user;
    public $notification;

    /**
     * Create a new job instance.
     *
     * @param  User $user
     * @param  Notification $notification
     * @return void
     */
    public function __construct(User $user, Notification $notification)
    {
        $this->user = $user;
        $this->notification = $notification;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        // Send the notification
        $this->user->notify($this->notification);
    }
}

इस सामान्यीकृत कार्य के साथ, आप एक ही कार्य का उपयोग करके विभिन्न प्रकार की ईमेल सूचनाएं भेज सकते हैं:

उदाहरण उपयोग:

use App\Jobs\SendEmailNotificationJob;
use App\Notifications\UserWelcomeNotification;
use App\Models\User;

$user = User::find(1); // Example user

// Dispatch a welcome email notification
SendEmailNotificationJob::dispatch($user, new UserWelcomeNotification());

// Dispatch a password reset notification
SendEmailNotificationJob::dispatch($user, new PasswordResetNotification());

2. इवेंट-श्रोता आर्किटेक्चर का लाभ उठाएं:

प्रत्येक घटना के बाद नौकरियों को मैन्युअल रूप से भेजने के बजाय, लारवेल का इवेंट-श्रोता आर्किटेक्चर आपको विशिष्ट घटनाओं (जैसे उपयोगकर्ता निर्माण) के आधार पर सूचनाओं और नौकरियों को स्वचालित रूप से ट्रिगर करने की अनुमति देता है।

चरण 1: घटनाओं को परिभाषित करें:

आप किसी ईवेंट को परिभाषित कर सकते हैं जैसे UserCreated:

php artisan make:event UserCreated

उदाहरण उपयोगकर्ता निर्मित घटना:

namespace App\Events;

use App\Models\User;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class UserCreated
{
    use Dispatchable, SerializesModels;

    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }
}

चरण 2: श्रोता बनाएँ:

आप एक श्रोता बना सकते हैं जो ईवेंट सक्रिय होने पर एक अधिसूचना भेजता है:

php artisan make:listener SendUserWelcomeNotification --event=UserCreated

उदाहरण श्रोता:

namespace App\Listeners;

use App\Events\UserCreated;
use App\Jobs\SendEmailNotificationJob;
use App\Notifications\UserWelcomeNotification;

class SendUserWelcomeNotification
{
    public function handle(UserCreated $event)
    {
        // Dispatch the email notification job
        SendEmailNotificationJob::dispatch($event->user, new UserWelcomeNotification());
    }
}

चरण 3: उपयोगकर्ता निर्माण पर आग लगने की घटना:

जब भी कोई उपयोगकर्ता बनाया जाता है, तो आप ईवेंट को सक्रिय कर सकते हैं, और लारवेल स्वचालित रूप से बाकी को संभाल लेगा:

use App\Events\UserCreated;

$user = User::create($data);
event(new UserCreated($user));

यह दृष्टिकोण आपको अपने व्यावसायिक तर्क से सूचनाओं को संभालने के तर्क को अलग करने की अनुमति देता है, जिससे सिस्टम अधिक स्केलेबल हो जाता है।

3. समूह समान सूचनाएं:

यदि आपके पास कई समान सूचनाएं हैं (उदाहरण के लिए, उपयोगकर्ता-संबंधित सूचनाएं जैसे स्वागत ईमेल, पासवर्ड रीसेट इत्यादि), तो आप एक अधिसूचना सेवा बना सकते हैं जो सभी उपयोगकर्ता सूचनाओं को केंद्रीकृत तरीके से संभालती है।

उदाहरण अधिसूचना सेवा:

namespace App\Services;

use App\Models\User;
use App\Jobs\SendEmailNotificationJob;
use App\Notifications\UserWelcomeNotification;
use App\Notifications\PasswordResetNotification;

class NotificationService
{
    public function sendUserWelcomeEmail(User $user)
    {
        SendEmailNotificationJob::dispatch($user, new UserWelcomeNotification());
    }

    public function sendPasswordResetEmail(User $user)
    {
        SendEmailNotificationJob::dispatch($user, new PasswordResetNotification());
    }

    // You can add more methods for different types of notifications
}

उदाहरण उपयोग:

अपने नियंत्रकों या ईवेंट श्रोताओं में, अब आप बस सेवा को कॉल कर सकते हैं:

$notificationService = new NotificationService();
$notificationService->sendUserWelcomeEmail($user);

निष्कर्ष:

  • एकल कार्य: आप विभिन्न प्रकार की सूचनाओं को संभालने के लिए एक सामान्यीकृत कार्य (SendEmailNotificationJob) का उपयोग कर सकते हैं।
  • इवेंट-श्रोता आर्किटेक्चर: सिस्टम इवेंट के आधार पर सूचनाओं को स्वचालित रूप से ट्रिगर करने के लिए लारवेल के इवेंट-श्रोता सिस्टम का उपयोग करें।
  • केंद्रीकृत अधिसूचना सेवा: बेहतर प्रबंधन और पुन: प्रयोज्यता के लिए एक सेवा में समान सूचनाओं को समूहित करें।

यह दृष्टिकोण आपके कोड को DRY (खुद को न दोहराएं) रखने में मदद करता है और जब आपके पास भेजने के लिए कई ईमेल सूचनाएं हों तो इसे बनाए रखना आसान हो जाता है।

विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: https://dev.to/msnmongare/centralize-your-notification-and-job-handling-1oid?1 यदि कोई उल्लंघन है, तो इसे हटाने के लिए [email protected] पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3