कस्टम प्रकाशक/सब्सक्राइबर इंटरफेस

कस्टम प्रकाशक/सब्सक्राइबर के समर्थन के लिए, आपको message.Publisher और message.Subscriber इंटरफेस को अंकुरित करना होगा।

पूर्ण स्रोत कोड: github.com/ThreeDotsLabs/watermill/message/pubsub.go

// ...
type Publisher interface {
    // Publish दिए गए संदेशों को निर्दिष्ट विषय पर प्रकाशित करता है।
    //
    // प्रकाशन या तो समवर्ती रूप से या असमवर्ती रूप से क्रियान्वित किया जा सकता है, निर्भर करता है अंकुरण के अनुसार।
    //
    // अधिकांश प्रकाशक कार्यान्वयन एक एटॉमिक संदेश प्रकाशन का समर्थन नहीं करते हैं।
    // इसका अर्थ है कि यदि एक संदेश का प्रकाशन विफल होता है, तो अगला संदेश प्रकाशित नहीं होगा।
    //
    // प्रकाशन को thread-safe होना चाहिए।
    Publish(topic string, messages ...*Message) error
    // यदि प्रकाशक असमवर्ती है, तो Close अरक्षित संदेशों को धारण करने चाहिए।
    Close() error
}

// सब्सक्राइबर प्रकाशक/सब्सक्राइबर का उपभोक्ता है।
type Subscriber interface {
    // Subscribe निर्दिष्ट विषय से प्राप्त हुए संदेशों के लिए एक आउटपुट चैनल वापसी देता है।
    // चैनल को Close() पर कॉल करने पर बंद कर दिया जाएगा, जब सब्सक्राइबर पर Close() कॉल किया जाएगा।
    //
    // अगले संदेश प्राप्त करने के लिए, प्राप्त किए गए संदेश पर Ack() कॉल करना आवश्यक है।
    // यदि संदेश को प्रोसेस करने में विफलता होती है और संदेश को पुनःप्रस्तुत किया जाना चाहिए, तो Nack() कॉल करना चाहिए।
    //
    // जब प्रदत्त ctx रद्द होता है, तो सब्सक्राइबर सदस्यता बंद कर देगा और आउटपुट चैनल को।
    // प्रदत्त ctx सभी उत्पन्न संदेशों पर सेट होता है।
    // जब Nack या Ack संदेश पर कॉल किया जाता है, तो संदेश का context रद्द होता है।
    Subscribe(ctx context.Context, topic string) (

काम की सूची

यहां कुछ बिंदु हैं जिन्हें आपको नहीं भूलना चाहिए:

  1. लॉगिंग (अच्छे संदेश और उचित स्तर).
  2. परिवर्तनीय और कॉन्फ़िगरेबल संदेश इंकोडर का विनिर्माण करें।
  3. प्रकाशकों और सब्सक्राइबर्स के लिए Close() का अंकुरण:
    • आइडेम्पोटेंट होना चाहिए
    • सही ढंग से काम करना चाहिए जब प्रकाशक या सब्सक्राइबर ब्लॉक होते हैं (उदा।, Ack का इंतजार कर रहे हैं)
    • सही ढंग से काम करना चाहिए जब सब्सक्राइबर का आउटपुट चैनल ब्लॉक होता है (क्योंकि इसे सुनने वाला कोई नहीं है)
  4. सेवित संदेशों के लिए Ack() और Nack() का समर्थन।
  5. Nack() का उपयोग करके सेवित संदेशों के पुन:प्रस्तुत का समर्थन।
  6. सामान्य प्रकाशक/सब्सक्राइबर परीक्षण का उपयोग करें। आपको दिखाने की चाहिए परीक्षण के खोजिये गाइड का उपयोग करने के लिए ट्रबलशूटिंग सुझाव।
  7. प्रदर्शन अनुकूलन।
  8. GoDocs, मार्कडाउन दस्तावेज़, और परिचयी उदाहरण।