कस्टम प्रकाशक/सब्सक्राइबर इंटरफेस
कस्टम प्रकाशक/सब्सक्राइबर के समर्थन के लिए, आपको 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) (
काम की सूची
यहां कुछ बिंदु हैं जिन्हें आपको नहीं भूलना चाहिए:
- लॉगिंग (अच्छे संदेश और उचित स्तर).
- परिवर्तनीय और कॉन्फ़िगरेबल संदेश इंकोडर का विनिर्माण करें।
- प्रकाशकों और सब्सक्राइबर्स के लिए
Close()
का अंकुरण:- आइडेम्पोटेंट होना चाहिए
- सही ढंग से काम करना चाहिए जब प्रकाशक या सब्सक्राइबर ब्लॉक होते हैं (उदा।, Ack का इंतजार कर रहे हैं)
- सही ढंग से काम करना चाहिए जब सब्सक्राइबर का आउटपुट चैनल ब्लॉक होता है (क्योंकि इसे सुनने वाला कोई नहीं है)
- सेवित संदेशों के लिए
Ack()
औरNack()
का समर्थन। -
Nack()
का उपयोग करके सेवित संदेशों के पुन:प्रस्तुत का समर्थन। - सामान्य प्रकाशक/सब्सक्राइबर परीक्षण का उपयोग करें। आपको दिखाने की चाहिए परीक्षण के खोजिये गाइड का उपयोग करने के लिए ट्रबलशूटिंग सुझाव।
- प्रदर्शन अनुकूलन।
- GoDocs, मार्कडाउन दस्तावेज़, और परिचयी उदाहरण।