SAGA Pattern Explained with Node.js Microservices | System Design + RabbitMQ
Sourabh Tembhare · 2026-04-23 · 1ч 23м · 490 просмотров · YouTube ↗
Топики: durable-execution
🎧 Аудио
📝 Summary
model=deepseek-v4-flash · prompt=summary-v7 · 18 358→3 243 tokens · 2026-07-20 14:58:53
🎯 Главная суть
Saga Pattern — это архитектурный паттерн для управления распределёнными транзакциями в микросервисах. Он разбивает долгоживущую транзакцию на последовательность локальных шагов, каждый из которых публикует событие или отправляет сообщение для запуска следующего шага. Если какой-то шаг завершается ошибкой, предыдущие успешные шаги откатываются с помощью компенсирующих операций. В видео демонстрируется реализация choreography-based саги на Node.js, Express и RabbitMQ на примере двух микросервисов (платёжный и заказов) для учебной LMS.
Проблема распределённых транзакций: почему ACID не работает между сервисами
В монолите транзакция гарантирует атомарность: изменения в нескольких таблицах либо применяются все, либо откатываются. В микросервисах каждый сервис имеет свою базу данных, и двухфазный коммит (2PC) часто оказывается слишком медленным и не подходит для асинхронных сценариев. Если один сервис (например, payment) успешно списал деньги, а следующий (order) не смог создать заказ — данные расходятся: пользователь лишился денег, но не получил услугу. Saga Pattern решает эту проблему, разбивая транзакцию на серию локальных транзакций с компенсацией предыдущих успешных шагов в случае сбоя.
Что такое Saga Pattern: определение и типы
Saga — это последовательность локальных транзакций, каждая из которых сопровождается компенсирующим действием (undo). Существует два основных способа координации:
- Choreography-based saga (хореография): каждый сервис после выполнения своего шага публикует событие, на которое подписывается следующий сервис. Нет центрального координатора.
- Orchestration-based saga (оркестрация): отдельный сервис-оркестратор управляет последовательностью шагов, вызывая каждый сервис и при необходимости запуская компенсации.
В видео выбран подход choreography на базе брокера сообщений RabbitMQ: после успешной оплаты payment-сервис отправляет сообщение, которое потребляет order-сервис. Если order-сервис ломается, он публикует компенсирующее событие (refund), которое ловится платёжным сервисом.
Архитектура демонстрационного проекта
Проект состоит из трёх компонентов:
- API Gateway — работает на порту 3000, перенаправляет запросы: префикс
/payment→ payment-сервис (порт 3001), префикс/order→ order-сервис (порт 3002). Создан с помощьюexpress-http-proxy. - Payment Microservice — порт 3001, отвечает за приём платежа (симулированный) и отправку подтверждения.
- Order Microservice — порт 3002, получает подтверждение оплаты, создаёт заказ (или имитирует ошибку).
- RabbitMQ — запущен локально через Docker (контейнер с образом
rabbitmq:management, порты 5672 для AMQP, 15672 для web UI).
Все сервисы написаны на Node.js с Express. Для кода не использовался архитектурный разделитель — для простоты весь логика размещена в server.js каждого сервиса.
Настройка RabbitMQ: exchange, очередь, routing key
Перед отправкой сообщений необходимо установить соединение с RabbitMQ, создать channel и объявить exchange. В коде используется:
- Direct exchange с именем (например, не указано в видео фиксированное имя, но в скрипте используется
channel.assertExchangeс типом'direct'). - Очередь
paymentQueueиpaymentRefundQueueс флагомdurable: true. - Routing key для основного потока —
payment, для компенсации —paymentRefund. - Привязка очереди к exchange через
channel.bindQueue(queue, exchange, routingKey).
Канал создаётся асинхронно через await connection.createChannel(). В случае ошибки соединения выводится сообщение в консоль.
Реализация Payment Service: отправка сообщения об успешном платеже
Payment-сервис выставляет REST-endpoint POST /createPayment. Из тела запроса извлекаются поля message и amount. После этого выполняется:
- Публикация сообщения в exchange с routing key
payment. Сообщение — это буфер, содержащий JSON-строку вида{ message: 'payment done', amount: 500 }. - Компенсационный consumer: payment-сервис подписывается на очередь
paymentRefundQueue(с routing keypaymentRefund). Когда приходит сообщение, он парсит его и выводит"refund successful"с данными.
Код использует channel.publish(exchange, routingKey, Buffer.from(JSON.stringify(data))). Ответ клиенту отправляется сразу после публикации (синхронно), не дожидаясь обработки order-сервисом — это характерно для асинхронной хореографии.
Реализация Order Service: потребление события и создание заказа
Order-сервис запускает consumer для очереди paymentQueue. При получении сообщения:
- Парсит его
JSON.parse(msg.content.toString()). - Извлекает
messageиamount. - Выводит лог
"payment received". - Симулирует успешное создание заказа — в коде просто логируется
"order created successfully". - Для демонстрации сбоя в блоке
try/catchгенерируется исключение:throw new Error("order creation failed"). - После успешной обработки отправляется
channel.ack(msg). - При ошибке вызывается
channel.nack(msg)(илиchannel.reject), а также публикуется компенсирующее сообщение в exchange с routing keypaymentRefund, содержащее те же данные (message и amount). Order-сервис не ждёт завершения refund — он лишь инициирует компенсацию.
Обработка сбоя: компенсирующая транзакция (refund)
Когда order-сервис выбрасывает ошибку, срабатывает следующий механизм:
- Order-сервис публикует сообщение с routing key
paymentRefundв тот же exchange. - Payment-сервис, подписанный на очередь
paymentRefundQueue, получает это сообщение. - В консоли payment-сервиса появляется строка
"refund successful"с теми же amount и message. - Таким образом, платёж отменяется (деньги возвращаются пользователю). Это и есть компенсация предыдущего шага (списания денег).
Демонстрация подтверждает: после ошибки в order-сервисе refund происходит автоматически. Если ошибки нет — refund не запускается, заказ создаётся успешно.
Примеры выполнения
На видео показаны два сценария:
- Успешный сценарий — запрос
POST /payment/createPaymentс{ message: "course purchase", amount: 500 }. В логах: payment-сервис логирует отправку, order-сервис получает сообщение, выводит"payment received"и"order created successfully". Ответ API —{ message: "payment done", data: {...} }. - Сценарий сбоя — в коде order-сервиса включён
throw new Error("order creation failed"). После запроса: payment-сервис отправляет сообщение, order-сервис логирует ошибку, публикует refund-сообщение. Payment-сервис через consumer получает refund и выводит"refund successful".
Технические детали: соединение с RabbitMQ, channel, buffer
В коде используется асинхронный amqplib (подразумевается). Последовательность:
amqp.connect('amqp://localhost')— подключение к локальному RabbitMQ.connection.createChannel()— создание канала.channel.assertExchange(exchangeName, 'direct', { durable: true })— создание exchange.channel.assertQueue(queueName, { durable: true })— создание очереди.channel.bindQueue(queueName, exchangeName, routingKey)— привязка.- Публикация:
channel.publish(exchangeName, routingKey, Buffer.from(JSON.stringify(obj))). - Потребление:
channel.consume(queueName, async (msg) => { ... }, { noAck: false }). - Подтверждение:
channel.ack(msg). - Отрицательное подтверждение:
channel.nack(msg).
Инструменты и окружение
- Node.js + Express для REST API.
- Nodemon для автоперезапуска.
- RabbitMQ в Docker-контейнере (
docker-compose upилиdocker runс образомrabbitmq:management). - HTTP-клиент (Postman, curl) для тестирования
POST /payment/payment/createPayment(через gateway наlocalhost:3000/payment/createPayment). - API Gateway на порту 3000 использует
express-http-proxyдля маршрутизации.
Особенности реализации и ограничения демонстрации
- Используется fake-платёж: никакого реального списания, только симуляция через консоль.
- Нет обработки повторной доставки сообщений (idempotency) — для продакшена требуется deduplication.
- Компенсация реализована для одного сценария (order fail). В реальных сагах может быть цепочка из множества сервисов.
- Код не разделён на модули, всё в одном файле — для наглядности лекции.
- Нет валидации входных данных —
messageиamountчитаются изreq.bodyбез проверок.
Что даёт использование Saga Pattern с RabbitMQ
- Асинхронность: payment-сервис не ждёт ответа от order-сервиса, производительность выше.
- Слабая связанность: сервисы общаются через брокер сообщений, а не напрямую.
- Автоматическая компенсация: при сбое в одном звене цепочки предыдущие шаги откатываются без ручного вмешательства.
- Масштабируемость: каждый сервис может иметь несколько инстансов, сообщения распределяются через очереди.
- Надежность: RabbitMQ хранит сообщения до их подтверждения (ack/nack), что защищает от потери данных.
📜 Transcript
hi · 7 163 слов · 163 сегментов · flagged: phrase_run, word_run (16 dropped, q=0.89)
Показать текст транскрипта
तो भाई आज के वीडियो में अफन देखने वाले हैं सागा पैटन ठीक है तो भाई आज के वीडियो में अफन देखेंगे यह सागा पैटन क्या होता है इसे क्यों यूज करते हैं इसके क्या बेनेफिट्स है तो भाई हो सकता है कि भाई बहुत सारे बंदे सिस्टम डेजाइन सीख रहे हो और उनने भाई basically saga pattern की बस theory ही पढ़ा हो तो भाई अगर तुम्हे basically इसको actual implementation देखना है तो भाई ये वीडियो देख सकते है और जिस बंदे को theory plus implementation दोनों देखना है तो वो भी इस वीडियो को दे सागा पैटर्न इज ए माइक्रो सर्विसेश डिजाइन पैटर्न डैट मैनेजेश आर्ट टांजिक्शन एक्राउस मल्टीपल सर्विसेश बाई ब्रेकिंग इट इंटू स्माल स्टेप्स एंड अंडूइंग प्रिवियस स्टेप्स इफ वन स्टेप्स तो सबसे पहले बात तो सबसे पहले देखते हैं सागा पैटर्न होता का है तो मैं एक्जामपल देके समझाता तो तुम्हें ज्यादा समझाएगा ठीक है जैसे भाई मान लो जैसे मालो भई तुम्हारे तुम्हारा एक basically learning management system का अब उसमें जैसे मालो वो microservice based architecture उसमें जैसे मालो तुम्हारे पास अभी 2 microservice है क्या 2 microservice है जैसे कि मालो भई तुम्हारे पास क्या है एक payment service है जैसे मान लो तुम्हारे पास एक पेमेंट सर्विस है तो मैंने क्या बोला बेसिकली भाई मान लो कि तुम्हारा बेसिकली एक LMS तुम्हारा learning management system का बेसिकली backend है based on microservice architecture तो उदर तुम्हारे पास दो microservice है एक payment, payment service या एक payment microservice और एक order microservice ठीक है तो अब सीन का है तुम्हों को बता तुम्हें जैसे मान लो भाई एक बंदा है मैंने क्या बोला एक बंदा ह क्या है एक बंदा है वह आता है वह तुम्हारा कोर्स खईदने क्या वह एक बंदा आया उसने क्या किया उसने क्या किया उस बंदे ने पेमेंट किया उसने क्या क्या पेमेंट किया उसने क्या क्या पेमेंट कर दिया उसने क्या कर दिया उसने क्या कर दिया उसने basically payment कर दिया उसकी payment हो गई तो basically क्या scene होगा कि अब तुछ तुमारी payment service है वो क्या करेगी एक message भेजेगी order service को क्या करेगी कि भाई यह जो मेरी payment service है वो एक message भेजेगी order service को कि भाई इस बंदी ने payment कर दिया है इसका order create कर दे क्या करते इसका order create कर दे अब माल लो तुमारी तुम्हारी ओर्डर सर्विस होगी फैल अभी तक मैंने क्या बता है भाई अफन एक्जामपल ले रहे हैं LMS का basically learning management system को तुम्हारा backend जो कि basically micro service based architecture है तो उसमें क्या होता है मालो एक बंदा आता है course भाई करने उसने जैसे मालो payment वाली API को hit किया तो उस बंदे ने payment कर दिया payment होग नहीं हुआ ठीक क्या सीन हुआ कि भाई देखो एक बंदा आया पेमेंट करने तो उस बंदे ने पेमेंट कर दिया दैन ये पेमेंट सर्विस एक तुमको मेसेज भेज देती ओर्डर सर्विस को कि भाई इस बंदे ने पेमेंट करती है इसको ओर्डर क्रेट करते पर तुमारी बंदे के पैसे फस गया है और order create ने हुआ इसका solution क्या है तो भाई इसका ही solution है saga pattern क्या इसका solution क्या है? इसका solution है saga pattern क्या है? अब तो जो सागा क्या करेंगा मालूम है यह सागा तुम्हारा जो प्रीवियस जो प्रीवियस सक्सेश्फुल स्टैप जो प्रीवियस सक्सेश्फुल स्टैप उसको अंडो या फिर कंपनसेशन करते क्या करतेगा उसको अंडो या कंपनसेशन करतेगा इसका मतलब कि यह जो पेमेंट हुआ था ना बेसिकली यह जो पेमेंट वाली जो पेम क्या करता है सागा बैटन कि माल लो तुम्हारी ये एक सर्विस क्या हो गई सक्सिस हो गई पर तुम्हारी ये क्या हो गई याली सर्विस फैल हो गई तो तुम्हारी पुरानी स्टेप थी उसको अंडोय कंपनेंट कर देता इसका मतलब अपने इस एक्जामपल में क्या करेगा क्या कर दो पैसा रिफंड कर दो ऐसे को रिफंड रिफंड कर दो तो आई तिंग तुम्हें अब सागा पैटन समय जागा होगा ठीक है अब तुम्हें सागा पैटन समय जागा हो चलो एक बार फिर से देखते सुरू से देखते सागा पैटन है क्या भाई बेसिकली तो सागा � तुम बेसिकली यह तुम्हारा system region का concept है most of the time तुम microservice architecture में implement करते हो तो बेसिकली यह तुम्हें technical term में मैंने definition बता है पर यह समझनी आई तो कोई बात में अब मेरी term में समझे ठीक है तो basically क्या है अपने example लिए माल लो तुम तुम्हार पास एक learning management system का backend जो microservice based architecture में बना हुआ है अब उसमें मालो जैसे payment वाली API है या payment वाली microservice है तो एक बंदे ने payment वाली microservice में payment वाली API को hit किया तो basically क्या होगा उस बंदे ने क्या कर दिया payment done कर दिया और basically उसने message भेज दिया कि इसको order service को मैं यहाँ पर एक arrow बना देत बेसिकली यहां पर लिख देता हमें मैसेज तो इसने मैसेज भेज दिया ओर्डर सर्विस को कि इसकी पेमेंट होगा इसको ओर्डर क्रेट कर दो पर तुमारी ओर्डर सर्विस हो गई फैल तो प्रब्लम क्या हो गई बंदे के पैसे फसके ओर्डर क्रेट नहीं हुआ तो अब अब पैसे रिटन करतेंगे अपने किसमे क्या करेंगे इसके पैसे रिफंड करतेंगे ठीक है I think समझ आ गया होगा अब I think तुम्हें सागा पैटर्न अच्छे से समझ आ गया होगा तो इतनी ही इसकी थेवरी है क्या इतनी ही इसकी इसकी थेवरी है तो भाई अभी अपने को ए नोड़ जैस नोड़ जैस एक्सप्रीज एकी बात होगी एक्सप्रेश जैस और रेबिटम्क्यू आना चाहिए और मालो अभी तुम्हें इतना समझ आ गया और तुम्हें रेबिटम्क्यू नहीं आता हो अगर मुझसे पढ़ने रेबिटम्क्यू तो कमेंट कर देना मैं रे� अगले लेक्टर से पढ़ा दूगा रेविट MQ भाई तुमको ऐसे कोई बात नहीं ठीक है तो प्री रिक्विट से भाई नोट जैस एक्पेस जैस और तुम्हे रेविट MQ आना चाहिए क्योंकि अपना बेसिकली रेविट MQ का यूज करेंगे ये दो ये जो दो जो मैसेज � और कुछ diagram, diagram सही दोर पता दो क्या? इसे पढ़ना हो भए मुझसे सिस्टम डिजाइन या फिर सागा पैटन अगर तो बढ़ना हो तो वह भी पढ़ा सकता हूं करते हैं तो मैं क्या करता है सबसे पहले मैं क्या करता है सागा पैटन सागा पैटन सागा पैटन सागा पैटन और मुझे इसके अंदर जाना है तो CD Saga Pattern तो मैं फाइल एक्स्प्रोलर में भी जाके यहां भी जाके यह काम कर सकते हो फर बेसिकली मुझे इधर सी करना ठीक है तो यह आगे मैं इससे हटा देता है तो अब मुझे इस फोल्डर को VS Code में उपन करना है तो Code Space और Dot ठीक है ओके � बेसिकली ओर्डर सर्विस से और पेमेंट सर्विस से या तो फिर मैं गेटवे भी गेटवे सर्विस भी बना दूगया चलो कुछ पढ़ रहे हैं तो अच्छे से बढ़ते हैं गेटवे सर्विस भी बना देते हैं बाकियों दोनों से भी काम हो जाता चल कोई ना बना देते है सबसे पहले काम करो तुम cd जाओ services के अंदर cd services के अंदर जाओ then इसके अंदर बनाओ तुम API gateway ठीक है तब services फोल्डर के अंदर एक gateway का फोल्डर बनाता है अपन basically क्या payment service और actual में अपन payment नहीं करने वाले ऐसी अपन fake payment करेंगा ठीक है एक्छल में razor पे यह सब implement अपन नहीं करन यह नहीं आता तो भी चल जाओ और अगर तुम्हें यह सीखना है तो यह एक मेरा प्रोजेक्ट वाली प्लेलिस्ट है उसको फॉलो करोगे तो तुम सीख जाओगे कैसे माइक्रो सर्विस बेज्ट अपन प्रोजेक्ट बना सकते हैं माइक्रो सर्विस अर्टेक्टर बेस्ट � जो जो चीज इंप्लीमेंट कर रहे हैं वह सब चीज मैंना बहुत आपने बता हैं जैसे कि मैंने वहाँ पर मैंको सर्विस अर्किटेक्टर पड़ा है अभी वहाँ पर हमको रेडिस इंप्लीमेंट करने हैं तो मैं पहले रेडिस कोर्स ला रहा है उसके बात इंप्लीमेंट क और सबसे पहला काम क्या करूंगा मैं एन्पी एम एनेट हाइपन हाइपन वाइ टेकेश डॉट जैसेन वाली फाइल बन जाएगी बन गई होगी और एक और काम करूंगा मैं एन्पी एम आई और भाई मैं अभी एक्ट्वल में बिसिकली मॉंगोस वंगोस का भी उसने कर रहा सब्सक्राइब कर लिए क्योंकि ना भाई मैंने सोचा है सब्सक्राइब कर लिए क्योंकि ना भाई मैंने सोचा है सब्सक्राइब कर लिए इंपूर्ट कर लूगा तुमको बोलना है एक्सप्रेस ओके देन इसे भी तुम कर लो एक्सपायर पॉंस्ट एक्सप्रेस एक्सप्रेस एक्सप्रेस एक्सप्रेस को एक सर्वर से दूसरे सर्वर में बेस्टी तो अब सबसे पहले क्या करूंगा मैं एप कि क्या करना चाहिए मुझे क्या करना सब्सक्राइब करते हैं तो इस प्रकार से एक्सप्रेस को कॉल करते हैं तो बिसिकली तुम एक एपलिकेशन बना रहे है जिसका नाम एप है यह जो एफ है यह तुमारी पूरी वेफसाइट को रिप्रेजेंट करता है यह समझ नहीं है त यह हो गया बहुत बेसिक हो गया है थो ठीक है हम पता नहीं बहुत क्यों बता देता हूं एप डॉट यूस और मैं बेसिकली यहां पर देता भई एक स्लैस बेसिकली किया पेमेंट पेमेंट सर्विस पेमेंट पेमेंट सर्विस सर्विस और मैं यहां प्रोक्सी में डारेक्ट बिसिकली तुम्हारे URL से रिक्वेस्ट आजी तो कहां forward करना है starting जो तुम्हारा prefix अगर यह रहेगा तब कहां forward करना है तुम्हें बिसिकली अभी तो बनाएं नहीं है पर यहां पर forward करना यहां पर प्रॉक्सी और यहां पर मैं डाल दूंगा अगर यह हिट करे तो । अब तीन हजार तुम दो पर करना ठीक है यह तीन हजार एक पोर्ट में चलेगी तुमारी पेमेंट माइक्रो सर्विस और तीन हजार दो पोर्ट में चलेगी तुमारी ओर्डर माइक्रो सर्विस अब कुछ नहीं है अब लेशन करना है बस बेसिक लिए क्या एव डॉट लेशन और यहां पर तुम लेग दो भाई तीन अजर पोर्ट में इसको लेशन करा हो और यहां पर लेग दो तुम मैं भी सब बैस्ट प्रेक्टिस फॉलो नहीं करता हूं क्योंकि मुझे समझाना जैस गेटवे सर्वीस इस सक्सेस्पुली रनिंग एट पूर्ट नंबर 3000 टीक है एक काम करता है चलो तरिक में कॉंस्ट पी ओर्ट पॉर्ट पॉर्ट देदर इसके अंदर 3000 डाल देता है ओके टीक है देन इस पूर्ट को मैं कॉपी करता है यहां डाल देता है और यहां पर पूर् अब आते हैं और सर्विस में तो सेम काम करते है इसमें भी बेसिकली और नया पोट ले लेते हैं एक नया पोट लेते है और cd जाते है अपन services के अंदर cd जाते है अपन order service cd जाते है अपन order service के अंदर then अभी क्ये करना है भी यह वही npm innate hypen hypen y और क्ये करना है बागुसाय npm my express नोड मोन भी चाहिए भाई साब अपने को नोड मोन और क्या जीए भाई साब तुमको कुछ तो बुल रहा हूं दया म कि देखा जाएगा या तीक है और यहां पर बेसिकलिए यहां पर इस्क्रिप्ट को कॉपी कर लो और इसे तुम यहां पर डाल दो ठीक है इधर बारबर क्या होना है ओके दैन अभी क्या करना है यहां पर फाइल बना एक फिर से होई server.js यह तुमको जो app.js जो नेम से बनाना � express is equal to require समझ जा रहे तो लाइक कर दो फिर से सम्झाओं गई ना भई जब आ गया और एक और काम कर दो तुम आप डॉट यूस बिसिकली पार्स कर दोगे ना डेटावे जोगे नहीं नहीं नहीं हां बेजेंगे डेटा चलो भीज देंगे तो आई पर यूस ऐसे कोई नीड नहीं थी वैसे तो डॉट जिस्टन टेकिया ओके देन हो गया अभी से भी लिसन करा देता है मैं एप डॉट लिस्टन बैसिकली कौन से नमर पोर्ट में चलाना है इसे अपने को इसे चलाना है पे कौन सी ओडर सर्विस को तीन हजार दो पे तो तीन हजार दो � और यहां पर callback function ले लेता मैं और यहां पर basically lock करा देता मैं क्या lock करा दूँगा मैं कि भाई अरे अरे बाबु मुश्या है क्या हो रहा है ठीक है यहां पर क्या करा दूँगा मैं order service order service is successfully running 8 port number कुन से number port में जल रहा हुँ जाए यह तीन अजर दो प्यां पोट एक्सिस के लिए ठीक मैं ओके दैन अभी ते करना था यह से भी चालू कर दो भाई साब पिर क्या सेम एंटीम रंडेव ओके दॉर्डर सर्विस पर देगो टर्मिनल ले लो इता बैसी वैसे मैं सब कोड पहले से लिखके ला सकते था तर मैंने क और यहां से स्क्रिप्स कॉपी करता है दोनों कंट्रोल सी यहां पर आता और इसे अटाता मैं कंट्रोल भी ओके दोनों स्क्रिप्स डाल दी स्क्रिप्स सिंगल स्क्रिप्स दो तो स्क्रिप्स ठीक है कुछ भी स्क्रिट बना सकते हो ऐसा नहीं कुछ भी भाई है मजा करते रहता हूं मैं तभी तभी स्रियस मतले लिए करो कुछ भी लिख रहे ना ते स्क्रिप्ट में वैलिट हो अची यह बस्तिक है सर्वर.js ओके कंट्रोल ए कंट्रोल सी सेम कॉपी प्रेश्ट करो इसका पूर्ट नमर कर दो किता है तीने जार एक कर देना इसका तीने ज यह बहुत तरीका से अगर है क्या हो रहा है यह पेमेंट टेकर बढ़ यह मस्ते पेमेंट सर्विस अगर निगा पूर्ट नमबर यह जो भी इस को भी चालू कर दोब सी एलस कर दो पहले में एन प्रियां रण डाव टेक है तो अप क्या करेंगे अपन पेमेंट सर्विस के अं डॉट यूज एफ डॉट यूज और बेसिकली यहां मैं डाले था भाई और बेसिकली क्या डाल दू मैं क्रियेट पेमेंट एंड पॉइंट का रख देता हमें क्रियेट पेमेंट टिक है क्रियेट पेमेंट और बेसिकली क्या लेगा यह रिक्वेस्ट और रिस्पॉंस तो ब इसके बाद मुझे क्या करना पड़ेगा अब मुझे तूदा तूदा किसको किसको करना है तूदा पिंसिपल नहीं भाई तूदा ओर्डर सर्विस तूदा ओर्डर सर्विस तूदा ओर्डर सर्विस अब यह भाई साब किसके हजब से करोगे तो पहली चीज तुम्हें क्या Rabbit MQ का सर्वर रहता है उसको अपने सिस्टम पर लोकली ही रन करूंगा मैं क्लाउड वाले का यूज नहीं करूंगा तो मैं क्या करूंगा अभी मेरे पास बेसिकली मैं टॉकर की है तो मेरे पास तो अभी देखो बेसिकली Rabbit MQ की इमेज नहीं है तो इससे बेसिकली एक तो तुम्हारा रेविटम्क्यू भी रन हो जाएगा और एक तुम्हारा जो रेविटम्क्यू मेंजमेंट यू आई है न उससे तुम देख भी पाऊगे तो दोनों सीन हो जाएगा यह ओके भी यह तो अभी क्या सीन करना है अभी अपने को क्या सीन करो अपने लिफ्टव एच्छा है तो इसको रेविट MQ management की image नहीं मिली तो unable to find image पहले image find करके लाएगा दोनों image को pull कर लेगा तुम्हारे docker up से then basically तुम्हारी image को run कर लेगा docker बना देगा भाई साब और दोनों अलग-अलग port में listen करने तुम्हारा rabbit MQ और एक तुम्हारा basically क्या तो टाइम लगेगा मेरा वैसे इंटरनेट तो फास्टी तब भी मुझे टाइम लग रहे तुम्हें भी लगेगा ठीक है जैसे यह राव भई तुम्हें यहां पर तुम देखो एक रैबिट एम्क्यू की इमेज हो गई है और जो की रन हो गई है तो देखो तुम्हारा कंटे कि अपने को बैसिक लिए अपने को बैसिक लिए अपने को बैसिक लिए अपने को बैसिक लिए अपने को बैसिक लिए अपने को बैसिक लिए अपने को बैसिक लिए अपने को बैसिक लिए अपने को बैसिक लिए करने के टूल सकते हो तुम्हें बैसिक लिए क्या इंस्टॉल करना पड़ेगा एंपी आई एम क्यूब लिप डो भी जो भी प्रनाउंसे साने मुझसे कभी नहीं होता जिंदगी में पर तुमसे हो जाता होगा क्यों कि वाई तुम ते जो चला गुंदे ओके तो मैं पेमेंट और यह अभी मैं सब कोड ना यहीं पर लिखूंगा एक ही फाइल में क्योंकि मुझे नहीं करना है ऐसा इसका कोड वहां लिखा जाता है वहां पर एक दम रियल इंडेश्टी में कैसा वर्ख किया जाता है तो चलो बाई तो सबसे पहले क्या करते हैं सबसे पहले किसको इसको इंपोर्ट कर लेते हैं अब मैं क्या करूंगा यहां पर मैं एक फंक्शन बनाऊंगा मैं आप एक फंक्शन बनाऊंगा कॉंश्ट क्या नेम से स्टार्ट नेम से जो बेसिकली क्या करेगा तुमारा क्या करेगा वैसाब यह यह भाई साब तुम्हारा बेसिकली भाई यह क्या करेगा यह तुम्हारा बेसिकली रेट करेगा यह तुम्हारा बेसिकली रेट करना रहता है और इसके अंदर आप ट्राइकेज ब्लॉक ले लेंगे ट्राइकेज ब्लॉक ले लिए तो सबसे पहले काम क्या करेंगे अपनेक् सब्सक्राइब करते हैं तो इस वीडियो को देखना है तो उनकी चुल वाई मैं दूर कर देता हूं समझाई देता हूं ठीक है तो सबसे पहले connection करना पड़ता है तो अभी locally अपने सिस्टम पर चल रहा है RabbitMQ तो basically इसके connection कर लेता हूँ और तुम कुछ चुल होगी तो docker भी तुमने इस्टल कर लिये होगा ठीक है ओके बाई इधा उदर से बाड़ लगे तो मैंने क्या किया मैं RabbitMQ को सरो से connect हो गया पर न अपने को एक चैनल बनाना पड़ेगा चैनल तुम बेसिकली बोल सकते हो यह कि तुम्हारी कम्मुकेशन लाइन होती है क्या होती है क्या करता है यह तुम्हारे कनेक्शन के अंदर तो मैं काम करूंगा यहां पर एक चैनल ले ले लेता और अब मैं क्या करूंगा बेसिकली अब मैं यहां पर भाई कॉंस्ट क्या भाई चैनल चैनल इस इकल टू इस इकल टू क्या भी जा अवेट बेसिकली क्या अवेट अवेट क्या सीने भाइस को यार अवेट कनेक्शन डॉट क्लियर चैनल और इसके अनल कुछ पास नहीं करना है तो बेसिकली अभी अपन ने क्या कर लिया अभी अपन ने चैनल भी बना लिया अभी एक कॉंश्ट एक्स्चेंज बना लेता और इसका क्या सीन रहता है ना तुम्हाई रेबिट में डेटा क्या रहता है तुम्हारा पास दो चीज रहती है एक प्रड्यूसर रहता है एक प्रड्यूसर रहता है प्रड्यूसर जो मैसेज को रिस्यू करता है जो प्रड्यूसर रहता है वो डायरेक्ट क्यू में मैसेज नहीं भेचता है तुम्हारा प्रड्यूसर बेसिकली एक एक्सचेंज में मैसे यह भाई मैं बता रहा हूँ यह रहा हूँ यह रहा हूँ नहीं पड़ा रहा हूँ नहीं प्रता नहीं मैं पर इत्रे डेपनिक्या बता रहा हूँ ठीक है तो मैं एक्सचेंज बना देता कॉंस्ट एक्सचेंज तो मैं एक्सचेंज का नाम रख देता भाई क्या रख दू मैं और एक का नाम मैं भूल के हो रहा है मुझे ऐसा लग रहा है एक तो तुम्हारा होता है डायरेक्ट एक होता है तुम्हारा फैन आउट और एक टोपिक होता है और एक कुछ तो होता है यार भूल रहा हो मैं ओके हैडर्स एक क्यों होता है डायरेक्ट एक्सचेंज होते हैं तो यह क्या बनाओ ठीक है okay then अब भी यह क्या करेगा अब भी अब कुछ नहीं करेगा यह मैंने बोला आप कुछ नहीं करेगा इतना ही काम करेगा और basically इसके बाद लॉक करा देगा यहां पर लॉक करा देना rabbitmq connection connection established successfully सब्सक्राइब करना बहुत ज्यादा करता हूँ मैं पहली में तुमको बता देरों ठीक है पता नहीं मैं लिप्टोफ मेरे हाथ कैसे चलने लगते हैं और कोई एरर आता है तो भी लॉक करा देना और यहां पर भी लॉक करा देना इसके बाद रेबिट म्क्यों रेबिट म्क्य एक अपने को राउटिंग की भी चीज़ है तो राउटिंग की तो इते डायक डाल देंगे तो अभी अपने को मैसेज भीजना है तो बैसे किली कैसे भीज सकते हो तो अभी देखो बंद आएगा कोर्स खाईद नहीं तो बैसे किली पेमेंट करेगा तो अपने डारेक्ट आप तो एक्सचेंज डाल दिया मैंने एक्सचेंज को भाई मुझे ना इधर बेसिकली इधर बनाना था ठीक है कॉंटॉल सी लेट एक्सचेंज तो मैंने एक्सचेंज बना लिया तो बेसिकली चैनल डोट पब्लिश एक्सचेंज दैन भाई बेसिकली और राउटिंग की डालना � पेमेंट रख देंगे बस्तिक राउटिंगी करना पेमेंट रख दिया अच्छा नाम नहीं रखते तो अच्छा रख देन फिर तुम्हें कर देना है अब बफर के फॉर्म में वेजना है तो बफर डियोट पिरों देन जेसं डॉट स्ट्रिंगी फाई जेसं डॉट स्ट्रिं मेडेबलेश मेडेबलेश मेडेबलेश जी मैसेच तो ऐसी रहती है मैसेज में डाल दो तुम भाई पेमेंट दन पेमेंट दन पेमेंट दन और अमाउंट में डाल दो याग अमाउंट में डाल दो तुम कित दो पेमेंट मारा माल लो इस नमाल लो पेमेंट मार रहा है वाई � तो मैंने क्या किया अब जैसी कोई इस API को हीट करेगा इसने पेमेंट कर दिया इसने फेक पेमेंट कर रहे हैं कुछ पेमेंट ने बस लॉक करा रहे हैं अपनने एक message भेज दिया है कि भाई exchange यह है और यह payments राउटिंग की है और buffer.form इसमें object भेज दिया stringify करके message payment done और amount इतने तो अभी अपने को क्या करना है बेसिकली अभी क्या करना है अपने को और क्या करना है अपने को बेसिकली अभी अपने बेसिकली पेमेंट का करा लिया ठीक है यह भी कर दिया और इसके बाद वैसे कुछ करना तो मुझे समझने आ रहा है ओक इतने करना ठीक है यहां पर और इस कि अपने को यहां पर भी करना है ना रिफंड रिफंड का कोड भी तुम्हें लिखना है तो तुम बेसिकली रिफंड के कोड को बात में लिखते हैं अब इतने काम करना है एक बार में रन कर देता है किसको तुम्हारी बेसिकली भाई पेमेंट सर्विस को देख लेता कुछ ए कर दिये कर दिये लोकल में एल में सिंगा बदना मैं स्पैलिंगे टिकर तंगी मुझे मेर पर भरोसा है मैं करूं गई ठीक है इता वरोसा है मुझे मैं स्पैलिंगी में कि क्या ही बता हूं चलो तो यह तो सीन हो गया बड़े मस्ट चलो अब आपन क्या करते हैं इधर एक लि� यहां पर भी सेम काम करो क्या काम करना है सबसे पहले तुम्हें क्या करना है यहां पर बहुत भूलता हूं बहुत भूलता हूं पता नहीं क्यों हूं तो यहां पर भी कोड कोड कोड करते हैं सेम ही कोड रहेगा इसे कोड रहेगा इसे डालो भाई पेस्ट पर दिये दैन भाई इस सेम स्टार्ट हो पूरे को कॉपी कर लो तो अभी क्या सीन है अभी यह सीन है कि यह तुम्हारा ओर क्या है कंस्यूमर यह तो यह लिसन कर रहा है तुम्हारे किसके लिए पेमेंट के लिए तो यहां पर एक्सेंज है और तुम इसके बाद एक काम करो इसके बाद ना तुम बेसिकली एक काम करो कि तुम वह भी बना लो क्या तुम्हे बेसिकली क्यू भी बनाना पड़ेगा भी क्यू थोड़ी बना तो एस्ट क्यू और क्यू का नाम दे दो तुम भाई पेमेंट पेमेंट क्यू क्या दे दो पेमेंट क्य और बेसिकली यहां पर तुम्हें का डालना एक्सचेंज और जिस सेम राउटिंग की डालना यार यह वाली पेमेंट पेमेंट और पहले क्यू का नेम डालना है यहां पर जो कि मैंने मिस्कर दिया तो क्यू का नेम पहले आता है तो क्यू का नेम हो गया एक्सचेंज हो गया औ तो पहले मेसेज जाता है एक्चेंज पर एक्चेंज पर एक्चेंज तुम्हारे क्यों में मेसेज डालता है जो क्यों से क्यों में डालता है उससे पता होता है राउटिंग के एलप सब्सक्राइब करेंगा अभी अपने क्यों करेंगा तो अपने यहीं पर लगा देते हैं चै इस Q को consume करेगा payment Q को और basically क्या लेगा यह message लेगा और message लेगा और यहां पर एक scene लगाओ यदि message नहीं मिला message तो भाई return चल जाना यार तो return चल जाना और यदि message मिल गया तब तुम्हें काम करना क्या काम करना लॉक करा देना लॉक करा देना message को basically message को लॉक करा देंगे message यहां पर लिख देंगे पेमेंट रिस्यूट रिस्यूट और यहां पर बैसिकली तुम्हें कैसे डेटा लेना है तुम्हें डेटा लेना है जेसन डॉट पार्स उद्धा इसके पार्स दैन जो मैसेज के अंदर एक कॉंटेंट मिलता है उसको तुम्हें बैसिकली टू स्ट्र उसको वो कहां से अटा दे अगर अगर नहीं दिया तो दुबारा आ सकता है वो सेम मैसेज देना पड़ता है तो कैसे देते है चैनल डॉट एसी के किसे देना इस मैसेज को एक मैसेज भेजते है चलो भाई साब हो जाए हो जाए चालू हो जाए चालू हो जाए चालू हो जाए तो अब सब सही है तो अभी मैं काम गाता है स्प्लीट कर देता है टर्मिनल को ठीक है साइड वे साइड दिखें और मैं यहां पर वेसिकली तुम्हारी सीडी जाता नहीं सीडी बहार आता मैं वेसिकली अब सीडी जाता में किसके अंदर पेमेंट सर्फिस के अंदर साइड वे साइड दिखाऊं ता कि इसलिक अरे ऐसे तो नहीं करना चला हटा हटा इस प्लिट न तो चलो भाई पोस्ट में पर आजा ओके आगा यहां पे और तीन हजार पर अपना यह चल रहा है और basically end point क्या है अपना अपना इसका end point है create payment और data तो कुछ भीजी ही नहीं भी है अपने बस ऐसे हीट करते हैं चलो data को लेते हैं ऐसा नहीं होगा ऐसा नहीं होगा अपने काम करते हैं यहां पर दो चीज लेते हैं body से यहां पर दो चीज लेते हैं body से एक const basically एक message same एक क्या लें� कि एमांट काना से लेंगे रिक्वेस्ट डॉडी से अभी कोई वैलिडिशन वैलिडिशन भी नहीं लगा रहा हूं ठीक एक पर चल रहा हूं कि मुझे पेमेंट पर जाना है किसे एक बार रिस्टार्ट करता मैं सब बढ़ गया के लिए कि लो सी एले से कर देता और बेसिकली � तो सब बढ़िया मैसेज चल जाएगा तुम्हारे क्यों में चल जाएगा और यहां पर लिशन कर रहे हैं तो यहां पर लॉग हो जाएगा तो यहां पर लॉग हो जाएगा वाई साब एक बच देखते हो क्या डालना है डेटा ओके मैसेज और मॉंट कॉपी कर लेता हम ऐसे और आ जाता है यहां पर ओके और यह कहां प्यों मैं यहां पर तीनेजर दो पर तीनेजर दो मतलब और सर्विस बिल्गुल सही है ठीक है तो एक तो यहां क्या डालना है मैं य अब हीट करते है तो यहां पर लॉग होना चाहिए क्या बिसील क्या लोग होना चाहिए पेमेंट ओके यहां पर लोग होना चाहिए यहां पर यहां पर यहां पर यहां पर क्या लोग होना चाहिए कि भाई क्या पेमेंट में से रिस्यूड और और केटर सक्सिस्कुली और जो � कि ओके बाई आज आएगा एप डॉर्ट यूस पेमेंट सर्विस सौरी गलत डालें अपने एंड़ पॉइंटी बेसिकली पेमेंट सर्विस स्लैस क्रियेट प्रॉट होते हैं होती रहती है आपने से होती है क्योंकि यह नहीं है अपने मिश्टेक करेंगे अपने सुधार है ठ लोकलोष्ट क्या इंटर्नल सब्सक्राइब क्या फटाइब कोड गेटवे सर्विस फटी तुमारी क्या गेटवे सर्विस फटी है और ये फटी क्यों मैं गेटवे सर्विस ऐसे तो भाई नहीं फटना चाहिए था इसे बेसिकली क्या रिजन हो सकता है गैट एट दोस इन फ� कि यहां कुछ नहीं फट्ट है क्या गेटवे सर्वीस ही फट्ट है क्या हुआ है क्या सीन है क्या सीन है क्या सीन है इसका इसका सब्सक्राइब करता है इस्ट्रीम तो मेरी ओके यहां पर सीन हो रहा है लोग का लोश्ट गलत लिखे हैं आपके अपने बहन का बाइस की मा को सब्सक्राइब क्या बता रहा था ये ये ये बंदा क्या बोल रहा था मुझे क्या प्रोब्लम में ये इप दा होस्ट ने लोस्ट कर्डेक्ट वरिफाई जो सिस्टम के लिए रिजल रहता है तो अब आ� बड़े बड़े कोर्सों में छोटी मोटी स्पैलिंग स्टेक सुरू से होते हो रही है तो अभी होगी ठीक है तो एक बार सेंट करते हैं फिर से अब गया फटा एता जीवन में फट रहा है न सी किज़े फटा है यहां फटा है चल बादा पबलिश मुझे पते ही था ना फटे ओके ओके फटेगा ना भाई यहां कॉंस लिखे हो क्या में पर किते मिस्टेक कर रहा है यहां भी फटेगा फिर तो मां कर संब अभी तो नहीं फटेगा है चलो इसको रहें दो से ठीक है किता मिस्टेक कर रहा है क्या हो गया मुझे ओके होती रहती रहती है मिस्टेक पहले से � रिस्पॉंस तो बेज देंगे देखो पेमेंट मैसेज मिल गया मैसेज कोर्स पेमेंट डन एमाउंट और ओर्डर क्रियेट हो गया तो अब मालो तुम्हारी ओर्डर सर इसको फेल करेंगे और देखेंगे क्या सीन होता है ठीक है चलो बाबु भीया तो अब अब क्या काम करते और यह asynchronous communication का फायदा करेता है मालूम है कि रिस्पॉंस बहुत fast मिलता है और जैसे यह सब साथ में करते हैं तो अपनी अलग लेवल की बनते होते हैं अगर तुम के ऐसा प्रोजेक्ट बनाना है तो सरवरा को देख सकते हूं ठीक है तो यह रिस्पॉंस देता हम है बेसिकली क्य कि यहां पर लोग हो गया था यहां पर पेमेंट में यहां पर देखो लॉग हो रहा होगा देखो पेमेंट डन एक पर लॉग होगा था ठीक है यह वालग ओके तो चलो भाई फिर से यहां पर सेंड करता है मैं रिस्पॉंस पर क्या मिलेगा देखो रिस्पॉंस पर पेमेंट � तो आप क्या करेंगे आपने काम करेंगे जैसे यहां पर मालो यहां पर यहां पर क्या करेंगे तो यहां पर यहां पर यहां पर मैं ट्राइच ब्लॉक ले लूगा और यहां पर जैसे ट्राइच में क्या करूंगा और यहां पर यहां पर जैसे ट्राइच में क्या करूंगा औ तो एक काम करना यदि एरर आता है तो लॉक करा देना इस एरर को अब क्या हुआ ओडर की रियेट नहीं हो पायों तो क्या करना पड़ेगा जो पिछली स्टेप जो सकते हुए उसको अंडू करना पड़ेगा ठीक है क्या करना पड़ेगा अंडू क्या करना पड़ेगा भाई � बेसिकली अपने काम कर देंगे इधर से मैसेज भीज देंगे और क्या ही करेंगे इधर से बेसिकली मैसेज भीज देंगे और कुछ नहीं करता जाता ठीक है तो अपन यहाँ पे काम करेंगे अब यहाँ पे एक और एक्सेंज बनाएंगे अपन क्या करेंगे चलो एक्सेंज य और यहां पर डाल देता हूं मैं बेसिकली क्यों को नाम क्या डाल देता हूं मैं पेमेंट रिफंड क्यों और बेसिकली इसको मैं भी ड्यूरेबल प्रूव कर देता ड्यूरेबल ड्यूरेबल को मैंने क्या कर दिया ट्रू ओके वा हुई जा तो अफन क्या करेंगे अवेट चैनल डॉट बाइंड क्यों को बाइंड करना है बिसिकली ये पेमेंट रिफेंड वाले क्यों को बाइंड करना है सेमी एक्षेंज का यूज करेंगे अलग एक्षेंज भी बना सकते है या फिर वाला एक्षेंज बना दोगे अगर डारेक्ट � तुम्हें नहीं आते हूं कि अगर आते हूं तो अच्छी वर ठीक है यहां पर बेसिकल एक्सचेंज डाल दीए देन राउटिंग की चेंज कर दूंगा जैसे राउटिंग की यहां पेमेंट थी यहां पर राउटिंग की का नाम रख दूंगा पेमेंट रिफंड पेमेंट र यहां भी बना सकते कोई सीन नहीं पर यहां पर क्यों बनेगा याला तो तुम यहां पर याला क्यों बनाना कुछ सा पेमेंट रेफंड वाला कंजूमर में ही अफने क्यों बनाते हैं और बाइंट करते हैं तो उससे कोई प्रॉबलम नहीं आएगी तो यहां पर पाइंड करेंगे अब अपने क्या काम करेंगे अब जैसे मालो यहां पर अपनी ओर्डर सर्विस क्या हो जा रही है तो कैज ब्लॉक में अपने क्या करेंगे अब यहां पर चैनल डॉट पबलीज क्या कर देंगे पबलीज की भाई पबलीज कर दे तो पहले क्या पहले तुम डालना पड़ागा एक्सचेंज तो यहां पर डाल दो तुम एक्सचेंज देन राउटिंग की तो क्या राउटिंग की से बाइंड कियो हो तुमने तुमने कियो है पेमेंट रिफंट राउटिंग की से बाइंड तो यहां पर डाल दो तुम बेसिकली क्या डाल द डॉट स्ट्रिंग इफाई और यहां पर यही मेसेज डाल देने ठीक है और एक और काम भी कर सकते हो और नेगेटिव एकनॉलजमेंट भी भी सकते हो और नेगेटिव बैसिकली चैनल डॉट नेगेटिव चैनल डॉट नेगेटिव चैनल डॉट नेगेटिव अकनॉलजमेंट कि चलो एक और काम करता है मैं यहां पर ना कि मैसेज के अंदर ना एक और एक और की डाल देता इधर में मैसेज के अंदर एक और की डाल देता रिफंड रिफंड नेम से और उसको में कर देता रिफंड मैसेज के अंदर रिफंड लिख देता ठीक है ऐसा एक और की डाल के मैसे तो लिसन कहां करोगे तो यहीं पर लिसन मारता तो बेसिकली किदर लिसन वारोगे इसके उपर ही मारता ठीक है तो इसका कोड़ कोपी कर लो लिसन वाला कंशुम वाले का कंशुम बोल सें ठीक है वह मैं थोड़ा सॉक्ट आयो मैं ज्यादा जी खुसर मैं असा लग रहा है मु किया नाम है तुम्हारे क्यों होगा तुम्हारे क्यों का नाम है पेमेंट रिफंड क्यों तो इसके लिए तुम्हें लिसन करना है यादि मैसेज मिल गया नहीं मिल तो पेमेंट रिफंड मैसेज रिशूटियां पर क्या लिए तुम पेमेंट बेसिकली ओके पेमेंट बेसिकल प्रेमेंट प्रेमेंट प्रेमेंट प्रेमेंट रिफंड मैसेज डिस यूप्टी के फिर जैसन डॉट पास मेंट रिफाई ओके दैन एक लाजमेंट भेज़ दी है और अब भी तो से अटावर स्ट्राइगेज ब्लॉक को यहां भी तुम वह रिफंड कर दोगा तोगा यहां पेमेंट किया जैसे यूजर ने क्या किया जहां पर पेमेंट किया तो तुम एक मैसेज करते हो कि मैसेज भेज़ दिये कहां पर तुमने और सर्विस में कि भाई पेमेंट हो गया उसका ओडर क्रेट कर तो यहां पर आते हो तुम यहां पर तुम इसके लिए लिसन कर रहे हो त पेइमेंट यहां पर लिख देता है रिफंड सक्सेस्फुली सक्सेस्फुली और एक और काम करता मैं क्या काम करता मैं कुछ बता रहा था भूल गया क्या बता रहा था कुछ बता रहा था कुछ इंपोर्टन मुझे याद रहा था चलो को इनफ रन कर देते हैं ओके तो अभी � यहां आपन जार मुझके थ्रो करते हैं तो थ्रो नियू एरर की भाई यहां पर लिख देते हैं ओर्डर फेल्ड ओर्डर किरियेशन फेल्ड ओर्डर किरियेशन फेल्ड ओर्डर किरियेशन फेल्ड टिक ऐसा कर दिये तो अब क्या होना चाहिए अब जैसे बंदा order करने जाएगा payment हो जाएगी order fail हो जाएगा then दुबारा यहां पर message आएगा और यहां पर refund हो जाएगा चलो अब देखते हैं इसको test करते है तो अभी देखो मैं आ जाता हूं payment service पर यहां पर log होना चाहिए और यहां पर log करा देता गया refund message send error के बाद क्या करा तो चलो बैसिकली मैं यहीं पर जाता है तो यहां पर आता अब मैं हीट करता है तो चलो मैंने हीट कर दिया ओके देखो पेमेंड रिफंड सक्सेस्फुली क्या पेमेंड रिफंड सक्सेस्फुली और बेसिकली यह क्या मिल रहा है तो अपने को ओके ओके देखते हैं ओके यह � यहां पूरा मैसेज भेजिए पर तुम देख रहे हो बैसिकली क्या सीन हो रहा है कि भाई मुझे पेमेंट रिपेंट का मैसेज आ गया ठीक है तो मैं काम करता है मैसेज के अंदर का जो कॉंटेंट एन इसे इसके अंदर रिफंड आंथा अभी देखता क्योंता तो कोई सीन नहीं तो अभी क्या सीन अपनने अब जान मुझके एक order service को fail कर दिये तो तुम्हारा refund भी हो जा रहा है तो अभी को पूरा flow सम्चो क्या होता है मैं आता हूँ मैं इस create payment वाली API को hit करता हूँ then ये एक message भेचता है किसको मेरी order microservice को मेरी order microservice उसको consume उसको listen कर रही है यहां बेज़ दो तो बेसिकली अभी तो जान बुचके तो अगर मैं एरर थो नहीं करता तो क्या हो जाता है और अपने यहां से अंडो करते हैं मतलब पिछली स्टेप तो उसको अंडो करेंगे अंडो मतलब बेसिकली क्या करते हैं यहां पने करते हैं तो फिर मैं क्या करता ह� कि अंदर आ जाएगा तुम्हारे बेसिकली मैसेच मेसेच के अंदर का इमाउंड और बेसिकली और क्या भीज रहा है था मैं एक चीज रिफंड भीज रहा है न ओके रिफंड रिफंड रिफंड भीज रहा है रिफंड इसके अंदर में डाल देता टू रिफंड हो रहा है ऐस हिट करते हैं ओके ओके सीन हो गया यह एक काम करो बेसिकली क्या काम करोगो यह जो अबजेक्ट है यह यहां पर आओ और एक let message is equal to 2 चीज डालो message इसके अंदर आएगा तुमारा message के अंदर का message और basically amount तो इस amount के अंदर आएगा तुमारा message के अंदर कई amount और इसमें लिख तो type डाल देता हूं ठीक का type message type डाल देता हूं ठीक का refund सब्सक्राइब सब्सक्राइब सब्सक्राइब सब्सक्राइब then CLS or NPM run dev okay then CD services CD order service or NPM run dev okay यह इतना infinite क्यों जा रहे है क्या scene के कुछ छेड़ है कि अपन में इस पर कुछ तो छेड़ है अपन में कुछ scene हो रहा है इसका रुप जाओ order service में scene हो रहा अभी रन करते है अभी फटा ओक यह ठीक है यह ठीक है यह सही फटा कोई दिक्रत वाली बात नहीं ठीक है क्योंकि यह अपन यहाँ पेरर थो कर रहे है तो आप चलिए बढ़िए ओके वह यह तेंक्यू वेरी मच अथा निए वह मैं अलग से मसेज बना रहा हूं तो क्यों फ� तो अभी मैं क्या करता सेम अभी जैसे मैं क्या करता एक पेमेंट करता है तो और क्रियेट हो जाना चाहिए तो देखता मैं तो मैंने सेंड किया यहां से तो देखो यह order created successfully और अभी refund नहीं हुआ पर अगर मैं यहाँ पर error दूँगा तुम देखना यहाँ पर payment done अभी देखो मैं यहाँ पर error दूँगा तो एक scene हो जाएगा क्या error दूँगा तो basically जो order create नहीं होगा तो basically payment refund हो जाएगा तो मैं आ जाता हुआ इस payment वाल में आप देख तो बस बाई आज के लिए तो इत्ता इत्यार तो तुमने देखा कि बाई बेसिकली कैसे तुम क्या कर सकते हो क्या कैसे कर सकते हो तुम बैसिकली कैसे तुम बैसिकली कैसे सागा पैटन की है जो बैसिकली क्या कर सकते हो तुम बैसिकली सागा पैटन के अपसे जो एक सर्विस का काम सक्सेस हो गया तो जो नेक्स सर्विस हो गया थी तो फिर जो पना सागा रहता हो प्रीवियस स्टेफ्स को अंडो कैसे कर सकते हो बैसिकली कंपसेट कैसे कर सकते हो तुम देखा बैसिकल कि आपन सागा पैटन को अपने रियल प्रोजेक्ट में इंप्लीमेंट कर सकते हैं और यह बिसिकली डेटा ऐसा वकी आ रहा है कि आ रहा है कि आ रहा है कि आ रहा है कि आ रहा है कर लेता कि मैं बेसिकली क्या करता हूं इधर से यह करता हूं यहां से जब मैं आता हूं रिफंड जैसन डोट इस्ट्रिंग की और ठीक है और जब मैं यहां पर यहां कर रहा हूं तो जैसन डॉट पार्स मैसे डॉट कॉंटेंट डॉट टो इस्ट्रिंग ओके भाई ओके ओके नहीं पर ऐसा क्यों हो रहा है ऐसा फिर ऐसा मेसेज हो रहा है बिसकी इसको तो मैंने वह भी कर ल देन इसको ट्विस्टिंग में भी अन्वर्ट कर लिया देन ऐसे क्यों हो रहा है देखते आरो ही अगले लेक्शन में देखते हैं वागी जो अपना महीन मोटीव था वो तो अपने देख लिए कैसे अपन सागा पैटन कर जाकते हैं मुझे भी यह समझने आ रहा है कि भाई य तो बिसिकली भाई अपन ने आज देख लिए है भाई सागा पैटन क्या होता है और कैसे इसको अपन एक्चुल में इंप्लीमेंट कर सकते हैं ऐसे ही एक्चुल में तुम्हारे रियल पोजेक्ट में इंप्लीमेंट कर सकते हैं यह क्या करता है सागा पैटन बिसिकली जैसे व तुम्हारा भी आज की वीडियो में क्या देखिए आज की वीडियो में जैसे आपने सागा पैटन देखिए तुम्हें कोई आउट बोक्स पैटन है कुछ भी देखना है सब्सक्राइब करें तुम्हें देखना है तुम्हें देखना है कैसे मोनोलेटिक आर्खिटेक्ट्चर को रियल प्रोडक्शन में माइक्रोसर्विस में सिप्ट किया जाता है बिसिकली मोनोलेटिक को कैसे माइक्रोसर्विस में आर्खिटेक्ट्चर को कैसे माइक्रोसर्विस तो जैसे इंट्रेस्टिंग इंट्रेस्टिंग कॉप टॉपिक देखेंगे रोज तकड़े तकड़े अलगी लिए ओलगे कल देखेंगे अब कल क्या देखना है तो बस बाई आज के लिए तो यार इत्ता इत्ता इत्ता अगर वीडियो पसंद आगो लाइक करना और चैनल पर नहोंगे सब्सक्राइब करना ठीक है ओके थैंक्यू बाइ
⚙️ Pipeline jobs
| Stage | Status | Att. | Updated | Error |
|---|---|---|---|---|
| download | done | 1/3 | 2026-07-20 14:57:26 | |
| transcribe | done | 1/3 | 2026-07-20 14:58:20 | |
| summarize | done | 1/3 | 2026-07-20 14:58:53 | |
| embed | done | 1/3 | 2026-07-20 14:58:55 |
📄 Описание YouTube
Показать
In this video, you will learn the SAGA Pattern in Microservices Architecture with both theory and real implementation. The SAGA pattern is a very important concept in System Design interviews and real production microservices systems. It helps manage distributed transactions across multiple services without using traditional database transactions. In this tutorial, we build a real microservices architecture using Node.js and understand how services communicate using RabbitMQ messaging. We also implement an API Gateway using Express HTTP Proxy to route requests to different services. Microservices used in this project: API Gateway Order Service Payment Service Technologies used in this project: Node.js Express.js RabbitMQ Express HTTP Proxy Nodemon Microservices Architecture What you will learn in this video: • What is the SAGA Pattern • Why SAGA Pattern is needed in Microservices • Distributed Transactions Explained • Microservices Communication using RabbitMQ • API Gateway Implementation • Order Service and Payment Service Architecture • Failure Handling in Microservices • Compensating Transactions Concept • Real Project Implementation with Node.js 📋 Whiteboard Notes: https://drive.google.com/file/d/1agKdScGnfqKJDlBqDrQug8SQs54c-o9P/view?usp=sharing 📸 Follow me on Instagram https://www.instagram.com/sourabh_tembhare18/ 💬 Join our WhatsApp Community https://chat.whatsapp.com/II7OdFwSJQpDu1AURfLWZd?mode=gi_t 🎥 Playlist: https://youtube.com/playlist?list=PLXOv1YQDUaG-EoYpCN4sA9tSwTfFzd_hm&si=7HaLWLxBMQFanscm This video is perfect for developers who want to learn System Design concepts with real backend implementation. #systemdesign #sagapattern #microservices #nodejs #rabbitmq #backenddevelopment #softwarearchitecture #distributedtransactions #expressjs #apigateway #coding #programming #backendengineer