অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ফ্লো ম্যানেজমেন্ট টুল যা ডেটা ফ্লো পরিচালনা, প্রক্রিয়া এবং রুটিংয়ের জন্য ব্যবহৃত হয়। নিফাইতে Content-based Routing বা কনটেন্ট-ভিত্তিক রাউটিং ডেটার বিষয়বস্তু বা অ্যাট্রিবিউটের ভিত্তিতে ডেটাকে বিভিন্ন রুটে পাঠানোর পদ্ধতি। এটি ডেটা ফ্লো ম্যানেজমেন্টে অত্যন্ত কার্যকরী, যেখানে নির্দিষ্ট শর্তে ডেটা একাধিক প্রোসেসরের মধ্যে রাউট করা হয়।
নিফাইয়ে RouteOnAttribute এবং RouteOnContent প্রোসেসর দুটি কনটেন্ট-ভিত্তিক রাউটিংয়ের জন্য ব্যবহৃত হয়। এগুলোর সাহায্যে ডেটার উপাদান বা অ্যাট্রিবিউটের উপর ভিত্তি করে সিদ্ধান্ত নেওয়া হয় কিভাবে ডেটাকে রাউট করা হবে।
RouteOnAttribute
RouteOnAttribute প্রোসেসর ব্যবহার করে আপনি ডেটার অ্যাট্রিবিউট (যেমন ফাইলের নাম, টাইপ, সাইজ) এর ভিত্তিতে ডেটা রাউট করতে পারেন। এটি ডেটার ইনপুট অ্যাট্রিবিউটের শর্ত অনুযায়ী রাউটিং সিদ্ধান্ত নেয়।
ব্যবহার
- Input: ডেটার অ্যাট্রিবিউটগুলি
- Process: নির্দিষ্ট শর্ত বা এক্সপ্রেশন অনুযায়ী রাউটিং
- Output: শর্তানুযায়ী বিভিন্ন রুটে ডেটা প্রেরণ
কনফিগারেশন
- Dynamic Properties: এখানে আপনি অ্যাট্রিবিউট ভিত্তিক শর্ত নির্ধারণ করতে পারেন। উদাহরণস্বরূপ:
filename matches '^.*.csv$'(ফাইলের নাম যদি.csvএক্সটেনশনে থাকে)contentType == 'application/json'(যদি কনটেন্ট টাইপ JSON হয়)
উদাহরণ
ধরা যাক, আপনি একটি ফাইল নামের ভিত্তিতে রাউট করতে চান, যেখানে .csv ফাইলগুলিকে একটি রুটে এবং .json ফাইলগুলিকে অন্য একটি রুটে পাঠাতে চান।
- RouteOnAttribute প্রোসেসর কনফিগার করুন:
- Property:
filename matches '^.*\.csv$' - Property:
filename matches '^.*\.json$'
- Property:
এখন, .csv ফাইলগুলি এক রুটে এবং .json ফাইলগুলি অন্য রুটে যাবে।
RouteOnContent
RouteOnContent প্রোসেসরটি ডেটার আসল কনটেন্ট বা বিষয়বস্তু বিশ্লেষণ করে রাউটিং সিদ্ধান্ত নেয়। এটি কনটেন্টের মধ্যে নির্দিষ্ট শব্দ বা প্যাটার্নের জন্য অনুসন্ধান করতে পারে এবং সেই অনুযায়ী ডেটা রাউট করে।
ব্যবহার
- Input: ডেটার কনটেন্ট (যেমন ফাইলের ভিতরের তথ্য)
- Process: কনটেন্ট বিশ্লেষণ করে রাউটিং সিদ্ধান্ত
- Output: কনটেন্টের ভিত্তিতে ডেটা রাউট করা হয়
কনফিগারেশন
- Search Expression: কনটেন্টে কী খুঁজে বের করতে হবে। উদাহরণস্বরূপ:
contains('error')(যদি কনটেন্টে 'error' শব্দটি থাকে)contains('success')(যদি কনটেন্টে 'success' শব্দটি থাকে)
উদাহরণ
ধরা যাক, আপনি একটি ফাইলের কনটেন্ট বিশ্লেষণ করতে চান এবং যদি কনটেন্টে "error" থাকে, তাহলে তা একটি রুটে এবং "success" থাকলে তা অন্য একটি রুটে পাঠাতে চান।
- RouteOnContent প্রোসেসর কনফিগার করুন:
- Property:
contains('error') - Property:
contains('success')
- Property:
এখন, "error" কনটেন্টযুক্ত ফাইলগুলি এক রুটে এবং "success" কনটেন্টযুক্ত ফাইলগুলি অন্য রুটে যাবে।
RouteOnAttribute এবং RouteOnContent এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | RouteOnAttribute | RouteOnContent |
|---|---|---|
| রাউটিং শর্ত | ডেটার অ্যাট্রিবিউটের ভিত্তিতে (যেমন ফাইল নাম, কনটেন্ট টাইপ) | ডেটার কনটেন্ট বা ভেতরের বিষয়বস্তু বিশ্লেষণ করে |
| শর্ত নির্ধারণ | অ্যাট্রিবিউটের মানের সাথে মিলিয়ে শর্ত দেওয়া হয় | কনটেন্টের মধ্যে প্যাটার্ন বা শব্দ খুঁজে শর্ত দেওয়া হয় |
| ব্যবহার | ফাইলের নাম, সাইজ, টাইপ, অথবা মেটাডেটার ভিত্তিতে রাউটিং | ফাইল বা ডেটার মধ্যে নির্দিষ্ট প্যাটার্ন বা শব্দ খুঁজে রাউটিং |
সারাংশ
অ্যাপাচি নিফাইতে RouteOnAttribute এবং RouteOnContent প্রোসেসর দুটি কনটেন্ট-ভিত্তিক রাউটিংয়ের জন্য ব্যবহৃত হয়। RouteOnAttribute প্রোসেসর ডেটার অ্যাট্রিবিউটের ভিত্তিতে রাউটিং সিদ্ধান্ত নেয়, যেখানে RouteOnContent কনটেন্টের ভিতরের তথ্য বিশ্লেষণ করে রাউটিং করে। এই দুটি প্রোসেসরের মাধ্যমে আপনি সহজেই ডেটা ফ্লোতে কনটেন্ট বা অ্যাট্রিবিউটের ভিত্তিতে শর্ত নির্ধারণ করতে পারেন এবং ডেটাকে সঠিক রুটে পাঠাতে পারেন।
Read more