Hazelcast Listeners হল এমন একটি শক্তিশালী ফিচার যা আপনাকে Hazelcast ডেটা স্ট্রাকচারের মধ্যে রিয়েল-টাইম ডেটা প্রসেসিং করতে সহায়ক হয়। লিসেনারগুলি একটি ইভেন্ট-ড্রিভেন আর্কিটেকচারে কাজ করে, যেখানে আপনি ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে কোনো পরিবর্তন ঘটলে তা জানাতে পারেন এবং সেই অনুযায়ী কাজ করতে পারেন। এর মাধ্যমে Hazelcast সিস্টেমে ডেটার অন্তর্নিহিত পরিবর্তনগুলো দ্রুত সনাক্ত করা এবং সেগুলোর উপর অ্যাকশন গ্রহণ করা সম্ভব হয়।
Hazelcast Listeners ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে যেমন IMap, IQueue, ISet, IList ইত্যাদিতে পরিবর্তন হলে স্বয়ংক্রিয়ভাবে ট্রিগার হয়, যা রিয়েল-টাইম ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়।
Hazelcast এ প্রধানত তিন ধরনের Listeners ব্যবহৃত হয়:
EntryListener ব্যবহার করা হয় যখন আপনি IMap এর Key-Value পেয়ারে ডেটার পরিবর্তন সনাক্ত করতে চান। যেমন ডেটা যোগ, পরিবর্তন বা মুছে ফেলা।
EntryListener এক বা একাধিক ইভেন্টে সাড়া দেয়, যেমন:
import com.hazelcast.core.EntryEvent;
import com.hazelcast.core.EntryListener;
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) {
// Optional: Handle evictions
}
}
// Hazelcast instance তৈরি
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
// IMap তৈরি
IMap<String, String> map = hz.getMap("myMap");
// EntryListener যোগ করা
map.addEntryListener(new MyEntryListener(), true); // 'true' means to include existing entries
entryAdded
ট্রিগার হয় যখন একটি নতুন কিজি ভ্যালু পেয়ার IMap এ যুক্ত হয়।entryUpdated
ট্রিগার হয় যখন কোনো কিজি ভ্যালু পেয়ার আপডেট হয়।entryRemoved
ট্রিগার হয় যখন একটি কিজি ভ্যালু পেয়ার IMap থেকে মুছে ফেলা হয়।ItemListener ব্যবহার করা হয় যখন আপনি ISet, IQueue বা IList এ আইটেম যোগ, মুছে ফেলা বা পরিবর্তন হওয়ার ইভেন্টগুলিকে ট্র্যাক করতে চান।
import com.hazelcast.core.ItemEvent;
import com.hazelcast.core.ItemListener;
import com.hazelcast.queue.IQueue;
public class MyItemListener implements ItemListener<String> {
@Override
public void itemAdded(ItemEvent<String> itemEvent) {
System.out.println("Item added: " + itemEvent.getItem());
}
@Override
public void itemRemoved(ItemEvent<String> itemEvent) {
System.out.println("Item removed: " + itemEvent.getItem());
}
}
// Hazelcast instance তৈরি
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
// IQueue তৈরি
IQueue<String> queue = hz.getQueue("myQueue");
// ItemListener যোগ করা
queue.addItemListener(new MyItemListener(), true); // 'true' means to include existing items
itemAdded
ট্রিগার হয় যখন একটি নতুন আইটেম IQueue, ISet বা IList এ যোগ করা হয়।itemRemoved
ট্রিগার হয় যখন কোনো আইটেম IQueue, ISet বা IList থেকে মুছে ফেলা হয়।Hazelcast এ MapListener ডিস্ট্রিবিউটেড IMap এর আরও উন্নত ট্র্যাকিংয়ের জন্য ব্যবহৃত হয়। এটি আপনাকে ম্যাপের মধ্যে প্রবাহিত হওয়া কাস্টম ইভেন্টগুলির উপর নজর রাখতে দেয়।
MapListener
বিশেষত আরও কাস্টম ইভেন্ট (যেমন, যখন putAll
, removeAll
, বা অন্যান্য নির্দিষ্ট কার্যকলাপ সম্পন্ন হয়) ট্র্যাক করতে ব্যবহৃত হয়।
ধরা যাক, একটি IMap ব্যবহার করে আমরা ই-কমার্স সাইটে প্রোডাক্টের stock quantity ট্র্যাক করতে চাই। আপনি যদি stock এর সংখ্যা একসাথে বাড়াতে বা কমাতে চান, তবে আপনার অ্যাপ্লিকেশনকে দ্রুত প্রতিক্রিয়া জানাতে হবে। EntryListener ব্যবহার করে আপনি যখনই stock সংখ্যাটি আপডেট করবেন, তখন তা real-time এ পেতে পারবেন।
public class StockEntryListener implements EntryListener<String, Integer> {
@Override
public void entryUpdated(EntryEvent<String, Integer> event) {
String product = event.getKey();
Integer newStock = event.getValue();
System.out.println("Product stock updated: " + product + " new stock: " + newStock);
}
@Override
public void entryAdded(EntryEvent<String, Integer> event) {}
@Override
public void entryRemoved(EntryEvent<String, Integer> event) {}
@Override
public void entryEvicted(EntryEvent<String, Integer> event) {}
}
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IMap<String, Integer> productStock = hz.getMap("productStock");
// EntryListener যোগ করা
productStock.addEntryListener(new StockEntryListener(), true);
// Stock আপডেট করা
productStock.put("Laptop", 20);
এই উদাহরণে, যখনই একটি product stock আপডেট হবে, entryUpdated ইভেন্ট ট্রিগার হবে এবং আপনি তার সাথে সাড়া দিতে পারবেন।
Hazelcast Listeners রিয়েল-টাইম ডেটা প্রসেসিংয়ের জন্য একটি অত্যন্ত কার্যকর উপকরণ, যা ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে (IMap, IQueue, ISet, IList) ডেটার পরিবর্তন সনাক্ত করে এবং তা অনুযায়ী অ্যাকশন নিতে সাহায্য করে। EntryListener, ItemListener এবং MapListener এই সকল ডেটা স্ট্রাকচারে কার্যকরভাবে ব্যবহার করা যায় এবং ডেটার পরিবর্তন দ্রুত সনাক্ত করতে সক্ষম হয়, যা real-time ইভেন্ট প্রসেসিংয়ের জন্য অপরিহার্য।
common.read_more