প্রকল্প সম্পর্কে

River হল Go-এর জন্য একটি ব্যাকগ্রাউন্ড জব প্রসেসিং লাইব্রেরি যা তার জব কিউ হিসেবে Postgres ব্যবহার করে। এটি এমনভাবে ডিজাইন করা হয়েছে যাতে অ্যাপ্লিকেশন ডেটা এবং জব কিউ একই ডেটাবেস শেয়ার করে, ফলে অন্যান্য ডেটাবেস পরিবর্তনের সাথে সাথে জবগুলো ট্রানজেকশনালভাবে এনকিউ করা যায়। জবগুলো নিশ্চিতভাবে এনকিউ হয় যদি তাদের ট্রানজেকশন কমিট হয়, রোলব্যাক হলে সরানো হয় এবং কমিট না হওয়া পর্যন্ত কাজের জন্য দৃশ্যমান হয় না। জবগুলো স্ট্রাক্ট পেয়ার হিসেবে সংজ্ঞায়িত করা হয়: একটি JobArgs ইমপ্লিমেন্টেশন যার json অ্যানোটেশন এবং একটি স্থিতিশীল "kind" স্ট্রিং থাকে, সাথে একটি Worker ইমপ্লিমেন্টেশন যা একটি Work ফাংশন প্রকাশ করে। স্টার্টআপে ওয়ার্কাররা নিবন্ধিত হয় যাতে River জব কাইন্ডগুলোকে ওয়ার্কারদের সাথে ম্যাপ করতে পারে। একটি Client তৈরি করা হয় একটি ডেটাবেস পুল, একটি ড্রাইভার এবং একটি কনফিগ দিয়ে যাতে একটি Workers বান্ডল এবং কিউ সেটিংস থাকে। ক্লায়েন্টরা শুরু এবং বন্ধ করা যায়, কনটেক্সট বাতিল বা স্পষ্ট Stop কলের মাধ্যমে সুন্দরভাবে শাটডাউন করা যায়। শুধুমাত্র-ইনসার্ট ক্লায়েন্টরা কাজ না করেই জব ইনসার্ট করতে পারে। বৈশিষ্ট্যগুলির মধ্যে রয়েছে Postgres COPY FROM ব্যবহার করে ব্যাচ জব ইনসারশন, একটি কাজের ফাংশনের ভিতর থেকে জব বাতিল করা, ত্রুটি এবং প্যানিক হ্যান্ডলিং, থ্রুপুট এবং বিচ্ছিন্নতার জন্য একাধিক কিউ, পর্যায়ক্রমিক এবং ক্রন জব, নির্ধারিত জব, জব স্নুজিং, টেলিমেট্রির জন্য কিউ কার্যকলাপ এবং পরিসংখ্যানে সাবস্ক্রিপশন, টেস্ট হেল্পার, ট্রানজেকশনাল জব সমাপ্তি, আর্গস/পিরিয়ড/কিউ/স্টেট দ্বারা ইউনিক জব, জব এবং কিউ পরিদর্শনের জন্য একটি ওয়েব UI এবং সরলীকৃত কাজের ফাংশন। River পাইথন এবং রুবি থেকে জব ইনসার্ট করাও সমর্থন করে ক্রস-ল্যাঙ্গুয়েজ এনকিউইংয়ের জন্য, যেখানে Go ওয়ার্কাররা সেগুলি প্রসেস করে। প্রকল্পটি Oban, Que, Sidekiq, Delayed::Job, GoodJob এবং Hangfire-এর মতো ব্যাকগ্রাউন্ড জব লাইব্রেরি দ্বারা অনুপ্রাণিত। README-তে ডকুমেন্টেশন, godoc, একটি River UI এবং একটি লাইভ ডেমো উল্লেখ করা আছে।