Hazelcast-এ EntryListener, ItemListener, এবং MapListener হল ইভেন্ট-ভিত্তিক শ্রোতা (listener) যা ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের পরিবর্তন বা ইভেন্টগুলি মনিটর করতে ব্যবহৃত হয়। এই লিসেনারগুলির মাধ্যমে আপনি ডেটা পরিবর্তন, যোগ বা মুছে ফেলার সময় দ্রুত প্রতিক্রিয়া জানাতে পারেন এবং একটি রিয়েল-টাইম ব্যবস্থায় সিস্টেমের অবস্থা ট্র্যাক করতে পারেন।
Hazelcast ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচার যেমন IMap, IQueue, ISet ইত্যাদির জন্য বিভিন্ন ধরণের ইভেন্ট শোনা যায়। আপনি যখন একটি ডেটা স্ট্রাকচারে কোনো পরিবর্তন করবেন, তখন এই listeners আপনাকে সেই পরিবর্তন সম্পর্কে অবহিত করবে।
1. EntryListener
EntryListener হল একটি ইন্টারফেস যা IMap (ডিস্ট্রিবিউটেড ম্যাপ) এর এন্ট্রি পরিবর্তন মনিটর করতে ব্যবহৃত হয়। এটি put, remove, update, evict ইত্যাদি অপারেশনগুলির সময় ইভেন্ট শোনার জন্য ব্যবহৃত হয়।
EntryListener উদাহরণ:
import com.hazelcast.core.EntryListener;
import com.hazelcast.map.EntryEvent;
import com.hazelcast.map.IMap;
public class MyEntryListener implements EntryListener<String, String> {
@Override
public void entryAdded(EntryEvent<String, String> event) {
System.out.println("Entry added: " + event.getKey() + " = " + event.getValue());
}
@Override
public void entryRemoved(EntryEvent<String, String> event) {
System.out.println("Entry removed: " + event.getKey());
}
@Override
public void entryUpdated(EntryEvent<String, String> event) {
System.out.println("Entry updated: " + event.getKey() + " = " + event.getValue());
}
@Override
public void entryEvicted(EntryEvent<String, String> event) {
System.out.println("Entry evicted: " + event.getKey());
}
}
এখানে, EntryListener ইন্টারফেসে চারটি প্রধান ইভেন্ট মেথড রয়েছে:
- entryAdded: একটি নতুন এন্ট্রি যোগ করা হলে কল হয়।
- entryRemoved: একটি এন্ট্রি মুছে ফেলা হলে কল হয়।
- entryUpdated: একটি এন্ট্রি আপডেট হলে কল হয়।
- entryEvicted: একটি এন্ট্রি নিষ্ক্রিয় হলে কল হয় (যেমন ক্যাশে eviction ইভেন্ট)।
EntryListener যোগ করা:
IMap<String, String> map = hazelcastInstance.getMap("exampleMap");
map.addEntryListener(new MyEntryListener(), true); // true for synchronous
2. ItemListener
ItemListener হল একটি ইন্টারফেস যা IQueue, ISet এবং IList এর মতো ডিস্ট্রিবিউটেড কালেকশন এর জন্য ব্যবহৃত হয়। এটি add, remove, clear ইত্যাদি অপারেশনের সময় ইভেন্ট শোনার জন্য ব্যবহৃত হয়।
ItemListener উদাহরণ:
import com.hazelcast.core.ItemEvent;
import com.hazelcast.core.ItemListener;
import com.hazelcast.collection.IQueue;
public class MyItemListener implements ItemListener<String> {
@Override
public void itemAdded(ItemEvent<String> item) {
System.out.println("Item added: " + item.getItem());
}
@Override
public void itemRemoved(ItemEvent<String> item) {
System.out.println("Item removed: " + item.getItem());
}
}
এখানে, ItemListener ইন্টারফেসে দুটি প্রধান ইভেন্ট মেথড রয়েছে:
- itemAdded: একটি নতুন আইটেম যোগ করা হলে কল হয়।
- itemRemoved: একটি আইটেম মুছে ফেলা হলে কল হয়।
ItemListener যোগ করা:
IQueue<String> queue = hazelcastInstance.getQueue("exampleQueue");
queue.addItemListener(new MyItemListener(), true); // true for synchronous
3. MapListener
MapListener হল একটি ইন্টারফেস যা IMap এর জন্য ব্যবহৃত হয় এবং এটি ম্যাপের পরিবর্তন, যেমন put, remove, clear ইত্যাদি ইভেন্ট মনিটর করে। যদিও EntryListener ইন্টারফেসটি বেশি ব্যবহৃত হয়, MapListener এছাড়াও ব্যবহার করা যেতে পারে যদি আপনি সম্পূর্ণ ম্যাপের পরিবর্তন শোনার প্রয়োজন অনুভব করেন।
MapListener উদাহরণ:
import com.hazelcast.core.MapEvent;
import com.hazelcast.core.MapListener;
import com.hazelcast.map.IMap;
public class MyMapListener implements MapListener {
@Override
public void mapCleared(MapEvent event) {
System.out.println("Map cleared");
}
@Override
public void mapEvicted(MapEvent event) {
System.out.println("Map evicted");
}
}
এখানে, MapListener ইন্টারফেসে দুটি প্রধান ইভেন্ট মেথড রয়েছে:
- mapCleared: যখন পুরো ম্যাপ ক্লিয়ার করা হয়।
- mapEvicted: ম্যাপের এন্ট্রিগুলিকে evict করা হয়।
MapListener যোগ করা:
IMap<String, String> map = hazelcastInstance.getMap("exampleMap");
map.addMapListener(new MyMapListener());
EntryListener, ItemListener, এবং MapListener এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | EntryListener | ItemListener | MapListener |
|---|---|---|---|
| ব্যবহার | IMap এর এন্ট্রি পরিবর্তন মনিটর করতে | IQueue, ISet, IList এর আইটেম পরিবর্তন | IMap এর পুরো ম্যাপ পরিবর্তন |
| ইভেন্ট | EntryAdded, EntryRemoved, EntryUpdated, EntryEvicted | ItemAdded, ItemRemoved | MapCleared, MapEvicted |
| অপারেশন | ডেটা স্ট্রাকচারের এন্ট্রি (key-value) এর উপর কাজ করে | আইটেম যোগ বা মুছে ফেলার উপর কাজ করে | পুরো ম্যাপ বা এর কোনো অংশের পরিবর্তন |
| সিনক্রোনাইজেশন | সিঙ্ক্রোনাস বা অ্যাসিনক্রোনাসভাবে কাজ করা যায় | সিঙ্ক্রোনাস বা অ্যাসিনক্রোনাসভাবে কাজ করা যায় | সাধারণত অ্যাসিনক্রোনাস, তবে সিঙ্ক্রোনাসও হতে পারে |
সারাংশ
EntryListener, ItemListener, এবং MapListener হল Hazelcast এর ইভেন্ট-ভিত্তিক শ্রোতা (listeners) যা ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের উপর কার্যকরী পরিবর্তন বা ইভেন্টগুলি মনিটর করতে ব্যবহৃত হয়। EntryListener একক এন্ট্রি পরিবর্তন মনিটর করতে, ItemListener ডিস্ট্রিবিউটেড কালেকশনে আইটেম যোগ বা মুছে ফেলা, এবং MapListener পুরো ম্যাপের পরিবর্তন ট্র্যাক করতে সহায়ক। এই listeners ব্যবহার করে আপনি Hazelcast ডিস্ট্রিবিউটেড সিস্টেমে রিয়েল-টাইম ডেটা পরিবর্তন মনিটর করতে পারেন এবং দ্রুত প্রতিক্রিয়া জানাতে পারেন।
Read more