কাস্টম পাবলিশার/সাবস্ক্রাইবার ইন্টারফেস

কাস্টম পাবলিশার/সাবস্ক্রাইবার সাপোর্ট যোগ করার জন্য, আপনাকে message.Publisher এবং message.Subscriber ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।

পূর্ণ সোর্স কোড: github.com/ThreeDotsLabs/watermill/message/pubsub.go

// ...
type Publisher interface {
    // Publish দেয় নির্ধারিত টপিকে প্রদত্ত মেসেজগুলি প্রকাশ করে।
    //
    // Publish বৈশিষ্ট্যমূলকভাবে বা অ-সম্পাদকভাবে সম্পাদিত হতে পারে, ইমপ্লিমেন্টেশনের উপর নির্ভর করে।
    //
    // শতভাগ পাবলিশার ইমপ্লিমেন্টেশন পরমাণু-অমূর্ত মেসেজ প্রকাশ সমর্থন করে না।
    // এটা বোঝায় যে, যদি একটি মেসেজ প্রকাশ ব্যর্থ হয়, তবে পরবর্তী মেসেজ প্রকাশ হবে না।
    //
    // পাবলিশ অবশ্যই থ্রেড-সেফ হতে হবে।
    Publish(topic string, messages ...*Message) error
    // যদি পাবলিশার অ-সম্পাদকভাবে কাজ করে, তা হতে হবে Close() অসম্পাদকভাবে আপ্পড করাবে।
    Close() error
}

// সাবস্ক্রাইবার পাবলিশার/সাবস্ক্রাইবার এর খাদ্য অংশ।
type Subscriber interface {
    // Subscribe প্রদত্ত টপিক থেকে প্রাপ্ত মেসেজগুলির জন্য আউটপুট চ্যানেল ফেরৎ করে।
    // আউটপুট চ্যানেলে Close() কল করা হলে চ্যানেল বন্ধ হবে।
    //
    // পরবর্তী মেসেজ পেতে, প্রাপ্ত মেসেজে Ack() কল করা আবশ্যক।
    // যদি প্রসেসিং মেসেজে ব্যর্থ হোক এবং মেসেজটি পুনরায় প্রেরণ করা দরকার হয়, তাহলে Nack() কল করতে হবে।
    //
    // যেহেতু প্রদত্ত কনটেক্সট ক্যানসেল করা হয়েছে, তার ফলে সাবস্ক্রাইবার সবগুলি জেনারেটেড মেসেজে সেট করা হয়েছে।
    // জবাব দেওয়া মেসেজে Nack বা Ack কল করা হলে, মেসেজের কনটেক্সট বাতিল করা হয়েছে।
    Subscribe(ctx context.Context, topic string) (

টু-ডু লিস্ট

নিচে কিছু বিন্দু আছে যা আপনার ভুলবোঝা না করবেনঃ

  1. লগিং (ভালো মেসেজ এবং উপযুক্ত লেভেল)।
  2. পরিবর্তনশীল এবং কনফিগারেবল মেসেজ ইনকোডারের প্রতিস্থাপন করুন।
  3. পাবলিশার এবং সাবস্ক্রাইবার এর জন্য Close() এর ইমপ্লিমেন্টেশন দরকার:
    • আইডেম্পোটেন্ট
    • সঠিকভাবে কাজ করতে হবে যখন পাবলিশার বা সাবস্ক্রাইবার ব্লক হয়েছে (উদাঃ শীর্ষিকা অপেক্ষা করছে)
    • সঠিকভাবে কাজ করতে হবে যখন সাবস্ক্রাইবার এর আউটপুট চ্যানেল ব্লক হয়েছে (কারণ কোনও এক এর মাধ্যমে শোনা হচ্ছে না)
  4. সেবা করুন Ack() এবং Nack() মেসেজগুলির জন্য।
  5. Nack() ব্যবহার করে প্রাপ্ত মেসেজগুলির পুনরায় প্রেরিতের সমর্থন।
  6. সাধারণ পাবলিশার/সাবস্ক্রাইবার টেস্টিং সমর্থন করুন। আপনাকে টেস্টিং ট্রাবলশ্যুটিং গাইডে পরিচিত করা হবে, ডিবাগিং টিপস পেতে।
  7. পারফরমেন্স অপটিমাইজেশন।
  8. GoDocs, মার্কডাউন ডকুমেন্টেশন এবং প্রবর্তন উদাহরণ।