কাস্টম পাবলিশার/সাবস্ক্রাইবার ইন্টারফেস
কাস্টম পাবলিশার/সাবস্ক্রাইবার সাপোর্ট যোগ করার জন্য, আপনাকে 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) (
টু-ডু লিস্ট
নিচে কিছু বিন্দু আছে যা আপনার ভুলবোঝা না করবেনঃ
- লগিং (ভালো মেসেজ এবং উপযুক্ত লেভেল)।
- পরিবর্তনশীল এবং কনফিগারেবল মেসেজ ইনকোডারের প্রতিস্থাপন করুন।
- পাবলিশার এবং সাবস্ক্রাইবার এর জন্য
Close()
এর ইমপ্লিমেন্টেশন দরকার:- আইডেম্পোটেন্ট
- সঠিকভাবে কাজ করতে হবে যখন পাবলিশার বা সাবস্ক্রাইবার ব্লক হয়েছে (উদাঃ শীর্ষিকা অপেক্ষা করছে)
- সঠিকভাবে কাজ করতে হবে যখন সাবস্ক্রাইবার এর আউটপুট চ্যানেল ব্লক হয়েছে (কারণ কোনও এক এর মাধ্যমে শোনা হচ্ছে না)
- সেবা করুন
Ack()
এবংNack()
মেসেজগুলির জন্য। -
Nack()
ব্যবহার করে প্রাপ্ত মেসেজগুলির পুনরায় প্রেরিতের সমর্থন। - সাধারণ পাবলিশার/সাবস্ক্রাইবার টেস্টিং সমর্থন করুন। আপনাকে টেস্টিং ট্রাবলশ্যুটিং গাইডে পরিচিত করা হবে, ডিবাগিং টিপস পেতে।
- পারফরমেন্স অপটিমাইজেশন।
- GoDocs, মার্কডাউন ডকুমেন্টেশন এবং প্রবর্তন উদাহরণ।