MassTransit C# (.NET): पूर्ण गाइड उदाहरणों के साथ
1. यह क्या है और क्यों ज़रूरी है
MassTransit एक शक्तिशाली, ओपन-सोर्स और व्यापक रूप से उपयोग की जाने वाली लाइब्रेरी है जो .NET प्लेटफॉर्म पर डिस्ट्रीब्यूटेड एप्लिकेशन बनाने के लिए है। यह RabbitMQ, Azure Service Bus, Amazon SQS/SNS, ActiveMQ और Kafka (कनेक्टर्स के ज़रिए) जैसी विभिन्न मैसेज ब्रोकर सिस्टम पर एक हाई-लेवल एब्स्ट्रैक्शन प्रदान करती है। MassTransit का मुख्य उद्देश्य उन सर्विसेज के डेवलपमेंट को आसान बनाना है जो एसिंक्रोनस मैसेज के ज़रिए इंटरैक्ट करती हैं, जिससे डेवलपर को किसी विशिष्ट ब्रोकर की लो-लेवल डिटेल्स में जाने की ज़रूरत नहीं पड़ती।
MassTransit क्यों ज़रूरी है? आधुनिक माइक्रोसर्विस आर्किटेक्चर में, सर्विसेज को एक-दूसरे से विश्वसनीय और एसिंक्रोनस तरीके से संवाद करना चाहिए। सीधे HTTP कॉल (जो कैस्केडिंग फेलियर और टाइट कपलिंग का कारण बन सकते हैं) के बजाय, मैसेज एक्सचेंज का उपयोग किया जाता है। MassTransit कनेक्शन और चैनल मैनेजमेंट, फेलियर पर रीट्री, एरर हैंडलिंग, डिस्ट्रीब्यूटेड ट्रांजेक्शन (सागा के ज़रिए), क्यू और टॉपिक मैनेजमेंट, मैसेज सीरियलाइजेशन/डीसीरियलाइजेशन जैसे जटिल कार्यों को संभालता है, और मैसेज भेजने, प्रकाशित करने और उपभोग करने के लिए एक सुविधाजनक API प्रदान करता है।
यह लाइब्रेरी कई प्रमुख पैटर्न लागू करती है: Command-Query Separation (कमांड भेजने के ज़रिए), Publish-Subscribe (इवेंट प्रकाशित करने के ज़रिए), Request-Response (एसिंक्रोनस मैसेज के ज़रिए सिंक्रोनस एक्सचेंज के लिए) और Saga Pattern (लंबे समय तक चलने वाली बिजनेस प्रक्रियाओं के प्रबंधन के लिए)। इसके कारण, MassTransit .NET पर विश्वसनीय, स्केलेबल और टेस्ट करने योग्य डिस्ट्रीब्यूटेड सिस्टम बनाने के लिए डी-फैक्टो स्टैंडर्ड बन गया है।
2. इंस्टॉलेशन
MassTransit NuGet के ज़रिए इंस्टॉल होता है। आप जिस मैसेज ब्रोकर का उपयोग कर रहे हैं, उसके आधार पर आपको मुख्य पैकेज और विशिष्ट ट्रांसपोर्ट के लिए पैकेज इंस्टॉल करना होगा।
बेसिक इंस्टॉलेशन (बिना ट्रांसपोर्ट के):
dotnet add package MassTransit
RabbitMQ के लिए:
dotnet add package MassTransit.RabbitMQ
Azure Service Bus के लिए:
dotnet add package MassTransit.Azure.ServiceBus.Core
Amazon SQS के लिए:
dotnet add package MassTransit.AmazonSQS
Kafka के लिए:
dotnet add package MassTransit.Kafka
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
नीचे RabbitMQ का उपयोग करके मैसेज भेजने और प्राप्त करने का एक सरल उदाहरण दिया गया है। सुनिश्चित करें कि आपका RabbitMQ चल रहा है (उदाहरण के लिए, Docker के ज़रिए: docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management)।
using System;
using System.Threading.Tasks;
using MassTransit;
// 1. मैसेज कॉन्ट्रैक्ट परिभाषित करें
public record OrderSubmitted
{
public Guid OrderId { get; init; }
public string CustomerName { get; init; }
}
// 2. कंज्यूमर (Consumer) परिभाषित करें
public class OrderSubmittedConsumer : IConsumer<OrderSubmitted>
{
public async Task Consume(ConsumeContext<OrderSubmitted> context)
{
var message = context.Message;
Console.WriteLine($"[Consumer] ऑर्डर प्राप्त हुआ: {message.OrderId} {message.CustomerName} से");
await Task.CompletedTask;
}
}
// 3. बस को कॉन्फ़िगर और शुरू करें
public class Program
{
public static async Task Main()
{
var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host("localhost", "/", h =>
{
h.Username("guest");
h.Password("guest");
});
cfg.ReceiveEndpoint("order-queue", e =>
{
e.Consumer<OrderSubmittedC