প্রকল্প সম্পর্কে
go-kafka হলো একটি Go মডিউল যা MIT লাইসেন্সের অধীনে github.com/faustbrian/go-kafka-এ প্রকাশিত হয়েছে। এটি Go সার্ভিসগুলোর জন্য বাউন্ডেড এবং এক্সপ্লিসিট Apache Kafka প্রডিউসার, কনজিউমার, রিপ্লে, ইন্সপেকশন এবং ট্রানজ্যাকশনাল বিল্ডিং ব্লক প্রদান করে এবং এটি franz-go-এর একটি র্যাপার হিসেবে বাস্তবায়িত। এর ডিজাইনের মূল উদ্দেশ্য হলো কলিং অ্যাপ্লিকেশন থেকে ডেলিভারি আউটকাম, লাইফসাইকেল ওনারশিপ, টপিক পলিসি বা সিকিউরিটি কনফিগারেশন লুকিয়ে না রাখা।
README-তে এর পরিধি এবং সীমাবদ্ধতা স্পষ্টভাবে উল্লেখ করা হয়েছে। এই প্যাকেজটি at-least-once বিল্ডিং ব্লক সরবরাহ করে। এটি ডাটাবেস রাইট এবং Kafka পাবলিকেশনকে অ্যাটমিক করে না, কনজিউমার সাইড ইফেক্টসকে exactly once করে না এবং টপিক বা ব্রোকার কনফিগারেশনের মালিকানা নেয় না। অস্পষ্ট পাবলিশ এবং কমিট আউটকামগুলো সমন্বয় করার দায়িত্ব অ্যাপ্লিকেশনের থাকে, যা লাইব্রেরিটি আলাদাভাবে শনাক্তযোগ্য রাখে।
ইনস্টলেশনের জন্য একটি মাত্র মডিউল ফেচ প্রয়োজন: go get github.com/faustbrian/go-kafka। ডকুমেন্ট করা কুইক স্টার্ট-এ, ক্লায়েন্ট অ্যালোকেট বা ব্রোকার ডায়াল করার আগেই বুটস্ট্র্যাপের সময় একটি ProducerConfig যাচাই করা হয়। স্যাম্পলটিতে একটি ব্রোকার লিস্ট, ক্লায়েন্ট আইডেন্টিফায়ার এবং অনুমোদিত টপিক লিস্ট সেট করা হয়, Validate কল করা হয়, তারপর NewProducer দিয়ে একটি প্রডিউসার তৈরি করে Close ডিফার করা হয়। পাবলিশ করার জন্য একটি কনটেক্সট এবং টপিক, কী এবং ভ্যালু বাইট বহনকারী একটি মেসেজ প্রয়োজন। README-তে উল্লেখ করা হয়েছে যে, কনস্ট্রাক্টর-কপি করা অ্যালাউ-লিস্টের মাধ্যমে টপিক অ্যাক্সেস সীমিত করা হয়, তাই প্রডিউসাররা শুধুমাত্র পূর্ব-অনুমোদিত টপিকগুলোতে অ্যাড্রেস করতে পারে।
গ্যারান্টি সেকশনে বেশ কিছু নির্দিষ্ট আচরণের তালিকা দেওয়া হয়েছে। প্রডিউসাররা franz-go-এর আইডেমপোটেন্স বজায় রাখে, সমস্ত ইন-সিঙ্ক রেপ্লিকা থেকে একনলেজমেন্ট প্রয়োজন হয় এবং রিট্রাই, বাফারিং, অ্যাডমিশন এবং ডেলিভারিকে বাউন্ড করে। কনজিউমাররা এক্সপ্লিসিট একনলেজমেন্ট, রিট্রাই, ডেড-লেটার, রিব্যালেন্স এবং শাটডাউন আচরণ প্রকাশ করে। ডিফল্ট হিসেবে TLS 1.2 বা তার পরবর্তী সংস্করণ ব্যবহৃত হয়, যেখানে অথেন্টিকেশন এবং ব্রোকার কম্প্যাটিবিলিটি এক্সপ্লিসিট ডেপ্লয়মেন্ট সিদ্ধান্ত হিসেবে বর্ণিত। সার্ভিস ইন্টিগ্রেশন, OpenTelemetry এবং Amazon MSK IAM-এর জন্য ঐচ্ছিক মডিউল তালিকাভুক্ত করা হয়েছে, যার প্রতিটির লাইফসাইকেল লাইব্রেরির পরিবর্তে কলার-এর মালিকানাধীন থাকে।
ডকুমেন্টেশন একটি docs ডিরেক্টরিতে সংগঠিত, যার মধ্যে একটি ইনডেক্স, কম্প্যাটিবিলিটি ম্যাট্রিক্স, স্পেসিফিকেশন ডিসিশন রেজিস্টার, ডেলিভারি গ্যারান্টি ডকুমেন্ট, অপারেশনস গাইড এবং প্রডিউসার, কনজিউমার, রিপ্লে, ইন্সপেকশন এবং লাইফসাইকেল কন্ট্রাক্টের বিস্তারিত রেফারেন্স রয়েছে। README-তে একটি ভার্সনড Golib ইকোসিস্টেম ইনডেক্স এবং এর ইন্টিগ্রেশন ও ডাটা মুভমেন্ট ফ্যামিলির কথা বলা হয়েছে, যাতে এই প্যাকেজটিকে সহযোগী লাইব্রেরি এবং ঐচ্ছিক অ্যাডাপ্টারগুলোর সাথে তুলনা করা যায়।
ডেভলপমেন্ট এবং রিলিজ কাজের জন্য, README-তে প্রভাবিত মডিউল ডিরেক্টরির বিপরীতে golib check এবং রিপোজিটরি-ওয়াইড পরিবর্তন ও রিলিজের জন্য make check চালানোর নির্দেশনা দেওয়া হয়েছে। ব্যাকএন্ড এবং ম্যানেজড-সার্ভিস পরিবর্তনগুলোর ক্ষেত্রে প্রযোজ্য ইন্টিগ্রেশন এবং ইন্টারঅপারেবিলিটি গেট পাস করা প্রত্যাশিত। README-র শীর্ষে কন্টিনিউয়াস ইন্টিগ্রেশন এবং CodeQL স্ট্যাটাস ব্যাজ, একটি Go রেফারেন্স ব্যাজ, রিলিজ ব্যাজ এবং Go ভার্সন দেখানো হয়েছে, যেখানে Go ব্যাজটি ভার্সন 1.26.6 নির্দেশ করে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.