Message-Driven Bean (MDB) হল একটি বিশেষ ধরনের EJB (Enterprise JavaBean), যা asynchronous messaging এর জন্য ব্যবহৃত হয়। MDB মূলত JMS (Java Message Service) বা অন্যান্য মেসেজিং সিস্টেম থেকে আসা মেসেজগুলি প্রক্রিয়া করার জন্য ব্যবহৃত হয়। এটি সাধারণত asynchronous বা event-driven অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয়, যেখানে মেসেজগুলিকে গ্রহণ ও প্রক্রিয়া করতে একটি নির্দিষ্ট সার্ভার বা ক্লায়েন্ট অ্যাপ্লিকেশনের সাথে যোগাযোগ করা হয়।
MDB EJB container দ্বারা ম্যানেজ করা হয় এবং message-driven অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি মেসেজ প্রক্রিয়া করার জন্য background worker হিসাবে কাজ করে।
MDB এর মূল বৈশিষ্ট্য:
- Asynchronous Messaging:
- MDBs asynchronous messaging এ কাজ করে, অর্থাৎ এটি মেসেজ গ্রহণ করার জন্য অপেক্ষা করে এবং সেগুলি প্রক্রিয়া করার জন্য এক্সিকিউট হয়। যখন মেসেজ আসে, তখন এটি ডিফাইন করা onMessage মেথডে চলে যায় এবং সেখানে প্রক্রিয়া করা হয়।
- JMS এর মাধ্যমে মেসেজ গ্রহণ:
- MDB সাধারণত JMS (Java Message Service) মেসেজিং সিস্টেম ব্যবহার করে মেসেজ গ্রহণ করে। এটি Queue বা Topic ব্যবহার করে মেসেজ প্রক্রিয়া করতে পারে।
- No Client State:
- MDB-এর কোন স্থায়ী অবস্থান থাকে না, কারণ এটি একটি stateless ডিভাইস। প্রতিটি মেসেজ প্রক্রিয়া করার জন্য একটি নতুন সেশন তৈরি হয়, এবং মেসেজ প্রক্রিয়া হয়ে গেলে MDB পরবর্তী মেসেজের জন্য প্রস্তুত থাকে।
- Automated Message Handling:
- MDB মেসেজ গ্রহণ এবং প্রক্রিয়া করার পুরো প্রক্রিয়া স্বয়ংক্রিয়ভাবে পরিচালনা করে। ডেভেলপারকে শুধু মেসেজ প্রক্রিয়া করার লজিক তৈরি করতে হয়, বাকি সকল কাজ EJB container পরিচালনা করে।
- Thread Management:
- MDBs বিভিন্ন থ্রেডের মধ্যে কাজ করতে পারে। EJB container MDB এর জন্য থ্রেডগুলো ম্যানেজ করে, যাতে মেসেজগুলি একে অপরকে ব্লক না করে এবং দ্রুত প্রক্রিয়া হয়।
MDB Lifecycle:
MDB-এর জীবনচক্র সাধারণভাবে অন্যান্য EJB Beans-এর চেয়ে আলাদা। MDB-এর জীবনচক্র প্রধানত activation, message processing, এবং deactivation এর মধ্যে সীমাবদ্ধ থাকে।
- Create:
- MDB এর ইনস্ট্যান্স যখন মেসেজ প্রক্রিয়া করার জন্য অ্যাক্টিভ হয়, তখন এটি তৈরি হয়।
- Message Handling:
- MDB একটি মেসেজ সিস্টেম থেকে মেসেজ গ্রহণ করে এবং মেসেজ প্রক্রিয়া করার জন্য
onMessage()মেথড কল করা হয়।
- MDB একটি মেসেজ সিস্টেম থেকে মেসেজ গ্রহণ করে এবং মেসেজ প্রক্রিয়া করার জন্য
- Deactivation:
- একবার মেসেজ প্রক্রিয়া হয়ে গেলে, MDB deactivated হয়ে যায় এবং মেসেজ প্রক্রিয়া করার জন্য আরও মেসেজ আসার জন্য অপেক্ষা করে।
MDB এর ব্যবহার:
MDB সাধারণত asynchronous messaging ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয়, যেখানে ক্লায়েন্ট বা সার্ভার থেকে আসা মেসেজগুলির উত্তর দ্রুত দিতে হয়। এটি বিশেষত ব্যবহৃত হয় যখন কোন কাজের জন্য অপেক্ষা করা হয় এবং প্রক্রিয়া শেষে একে একে কাজ সম্পন্ন করতে হয়, যেমন:
- Order Processing System: অর্ডারের একটি মেসেজ আসলে সেটি প্রক্রিয়া করা।
- Notification System: নতুন আপডেট বা নোটিফিকেশন পাঠানোর জন্য।
- Payment Processing: পেমেন্ট গ্রহণের জন্য asynchronous messaging ব্যবহার করা।
MDB উদাহরণ (Eclipse):
MDB উদাহরণ হিসেবে একটি Text Message Bean তৈরি করা হতে পারে, যেখানে একটি মেসেজ গ্রহণ করে এবং কনসোলে তা প্রদর্শন করা হয়।
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.TextMessage;
import javax.jms.MessageListener;
@MessageDriven
public class TextMessageBean implements MessageListener {
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
String text = ((TextMessage) message).getText();
System.out.println("Received Message: " + text);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- @MessageDriven: এটি একটি MDB হিসাবে চিহ্নিত করে।
- onMessage(): এই মেথডটি মেসেজ গ্রহণ করার সময় কল করা হয়। এটি TextMessage ধরতে পারে এবং মেসেজের কন্টেন্ট প্রক্রিয়া করে।
- MessageListener: MDB কে মেসেজ গ্রহণ করার জন্য একটি লিসেনার হিসেবে কাজ করে।
MDB এর সুবিধা এবং ব্যবহার:
- Scalability:
- MDB একটি খুব ভালো scalable সিস্টেম প্রদান করে, যেখানে এটি একাধিক মেসেজ একযোগে প্রক্রিয়া করতে সক্ষম হয়।
- Loose Coupling:
- MDB মেসেজ পাঠানো এবং গ্রহণ করার মধ্যে loose coupling রক্ষা করে, অর্থাৎ ক্লায়েন্ট সার্ভার থেকে মেসেজ পাঠাতে পারে, এবং সার্ভার থেকে মেসেজ গ্রহণ করতে পারে, কিন্তু এই দুইটি একে অপরের সাথে সরাসরি যোগাযোগ রাখে না।
- Simplified Asynchronous Processing:
- MDB asynchronous মেসেজ প্রসেসিং সহজ করে, যা সিস্টেমের কর্মক্ষমতা এবং রেসপন্স টাইম বৃদ্ধি করতে সাহায্য করে।
Eclipse তে MDB Configuration:
Eclipse তে MDB কনফিগার করতে, আপনাকে সাধারণভাবে একটি EJB প্রকল্প তৈরি করতে হবে এবং একটি Message-Driven Bean তৈরি করতে হবে। Eclipse এ GlassFish, JBoss, বা WildFly এর মতো EJB containers ব্যবহার করতে পারেন, যা MDB সাপোর্ট করে।
ধাপসমূহ:
- Eclipse Project তৈরি করুন:
- File -> New -> Dynamic Web Project নির্বাচন করুন।
- EJB ফিচার সক্রিয় করতে EJB Project নির্বাচন করুন।
- MDB তৈরি করুন:
- New -> EJB -> Message Driven Bean নির্বাচন করুন এবং একটি নতুন MDB তৈরি করুন।
- EJB Server Configuration:
- GlassFish বা WildFly সার্ভার কনফিগার করুন এবং সার্ভারে MDB ডিপ্লয় করুন।
- Test and Debug:
- মেসেজ সার্ভিস (যেমন JMS Queue বা JMS Topic) সেটআপ করুন এবং MDB এর মাধ্যমে মেসেজ পাঠানোর প্রক্রিয়া পরীক্ষা করুন।
সারাংশ
Message-Driven Beans (MDBs) হল EJB-এর একটি বিশেষ প্রকার যা asynchronous messaging (যেমন JMS) এর মাধ্যমে মেসেজ গ্রহণ এবং প্রক্রিয়া করতে ব্যবহৃত হয়। এটি stateless হয়, কোনো অবস্থা সংরক্ষণ করে না এবং একটি মেসেজ সিস্টেম থেকে মেসেজ গ্রহণ করে তা প্রক্রিয়া করে। MDB সাধারণত ব্যবহৃত হয় asynchronous event-driven systems তৈরির জন্য, এবং এটি loose coupling এবং scalability প্রদান করে। Eclipse তে MDB তৈরি এবং কনফিগার করার মাধ্যমে আপনি মেসেজ-চালিত অ্যাপ্লিকেশন তৈরি করতে পারেন।
Read more