Timer Service হল Java EE (এখন Jakarta EE) একটি গুরুত্বপূর্ণ ফিচার, যা Enterprise JavaBeans (EJB) এর অংশ হিসেবে ব্যবহৃত হয়। Timer Service এর মাধ্যমে আপনি নির্দিষ্ট সময়ে নির্দিষ্ট কার্যাবলী (tasks) চালাতে পারেন। এটি asynchronous প্রক্রিয়াগুলির জন্য উপযোগী, যেখানে আপনি নির্দিষ্ট সময় পরে কোনো কার্যাবলী সম্পাদন করতে চান।
Timer Service কি?
Timer Service হল একটি সার্ভিস যা আপনাকে EJB Beans এর মধ্যে নির্দিষ্ট সময় পরে (বা নির্দিষ্ট সময় অন্তর) কোনো কাজ বা কার্যক্রম চালানোর সুযোগ দেয়। Timer Service মূলত stateless এবং stateful EJB Beans এর মধ্যে সময়-ভিত্তিক কার্যাবলী পরিচালনার জন্য ব্যবহৃত হয়। এটি আপনার এন্টারপ্রাইজ অ্যাপ্লিকেশনকে সাময়িক কাজ (например, প্রতিদিন একাধিক বার প্রক্রিয়া চালানো, ডেলিভারি সময় নির্ধারণ করা, লগ আউট টাইমস সেট করা) সম্পাদন করতে সাহায্য করে।
Timer Service এর বৈশিষ্ট্য:
- এডভান্সড শিডিউলিং: Timer Service ব্যবহার করে আপনি নির্দিষ্ট সময়ের পরে একটি কার্য সম্পন্ন করতে পারেন।
- ব্যাকগ্রাউন্ড কার্যাবলী: Timer Service ব্যাকগ্রাউন্ডে নির্দিষ্ট সময়ে কার্যগুলি সম্পন্ন করতে সহায়তা করে।
- স্টেটফুল এবং স্টেটলেস EJB Beans এর মাধ্যমে টাইমার পরিচালনা করা যায়।
Timer Service ব্যবহার করা:
Timer Service এর মাধ্যমে EJB Beans তে আপনি বিভিন্ন ধরনের টাইমার কাজ করতে পারেন। উদাহরণস্বরূপ, একটি নির্দিষ্ট সময় পর বা নির্দিষ্ট সময় অন্তর কোনো কার্য সম্পন্ন করার জন্য টাইমার সেট করা।
Timer Service এর সাথে EJB ব্যবহার করার ধাপ:
- TimerService ইনজেকশন: TimerService কে EJB Bean এর মধ্যে ইনজেক্ট করতে হয়, যা টাইমার সেট করতে এবং সেগুলি পরিচালনা করতে সাহায্য করবে।
- Timer সেট করা: TimerService এর মাধ্যমে আপনি
@Timeoutঅ্যানোটেশন ব্যবহার করে একটি মেথডে নির্দিষ্ট সময় পরে কাজ চালানোর জন্য টাইমার সেট করতে পারেন।
Timer Service উদাহরণ (Stateless EJB Bean):
এখানে আমরা একটি Stateless Session Bean তৈরি করব যা নির্দিষ্ট সময় পরে একটি কাজ সম্পন্ন করবে।
Step 1: Timer Service ব্যবহার করে Stateless Session Bean তৈরি করা
import javax.ejb.Stateless;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.annotation.Resource;
@Stateless
public class TimerExampleBean {
// TimerService ইনজেক্ট করা
@Resource
private TimerService timerService;
public void startTimer() {
// 5 সেকেন্ড পরে কাজটি সম্পন্ন করতে টাইমার সেট করা
timerService.createSingleActionTimer(5000, null);
System.out.println("Timer has been started!");
}
// @Timeout অ্যানোটেশন ব্যবহার করে টাইমারকে কার্যকর করা
@javax.ejb.Timeout
public void timeoutMethod(Timer timer) {
System.out.println("Timer has triggered!");
}
}
এখানে, startTimer মেথডটি টাইমার তৈরি করে যা 5 সেকেন্ড পরে timeoutMethod মেথডটি কল করবে। @Timeout অ্যানোটেশন ব্যবহার করে আপনি টাইমারকে নির্দিষ্ট সময়ে ট্রিগার করতে পারেন।
Step 2: Timer সেটিংস এবং পরিচালনা
- createSingleActionTimer: একক টাইমার (যেটি একবার রান হবে) তৈরি করতে ব্যবহৃত হয়। এটি দুটি প্যারামিটার নেয়:
- টাইমার চলানোর জন্য সময় (মিলিসেকেন্ডে)
- টাইমার এর জন্য তথ্য (যদি কোনো তথ্য দরকার হয়)
- createCalendarTimer: নির্দিষ্ট ক্যালেন্ডার টাইমে টাইমার তৈরি করতে ব্যবহৃত হয়, যেমন নির্দিষ্ট দিনে বা নির্দিষ্ট সময়।
import javax.ejb.TimerConfig;
import javax.ejb.TimerHandle;
import java.util.Calendar;
public void scheduleTimer() {
// ক্যালেন্ডার টাইমে টাইমার সেট করা (প্রতিদিন ১২:০০ PM)
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
timerService.createCalendarTimer(calendar.getTime(), new TimerConfig(null, false));
}
এখানে, createCalendarTimer একটি ক্যালেন্ডার টাইম তৈরি করবে যা প্রতিদিন দুপুর ১২:০০ এ কাজ করবে।
Step 3: Timer Expiry Management
একবার টাইমার কার্যকর হওয়ার পর, এটি timeout মেথডটিকে কল করবে। টাইমারটি যদি একাধিকবার ট্রিগার করতে হয়, তাহলে setRepeating() ব্যবহার করা যায়। টাইমার সম্পন্ন হওয়ার পরে আপনি এটিকে কিভাবে পরিচালনা করবেন তা আপনার কোডে উল্লেখ করতে হবে।
// পুনরাবৃত্তির জন্য টাইমার সেট করা
timerService.createCalendarTimer(calendar.getTime(), new TimerConfig(null, true)); // true => repeating timer
এখানে, পুনরাবৃত্তি টাইমারটি একাধিকবার ট্রিগার হবে, যতক্ষণ না এটি বাতিল করা না হয়।
Timer Service এর সুবিধা:
- সিম্পল এবং প্রাঙ্কটিকাল: EJB টাইমার সিস্টেমটি সহজেই টাইম-ভিত্তিক কাজ নির্ধারণ এবং চালানোর সুবিধা প্রদান করে।
- অ্যাসিঙ্ক্রোনাস প্রসেসিং: Timer Service ব্যবহারের মাধ্যমে আপনি কোডের কোনো অংশকে অবজেক্টের অবস্থা পরিবর্তন না করেই নির্দিষ্ট সময়ে কাজ করতে পাঠাতে পারেন।
- ব্যাকগ্রাউন্ড কাজ: এটি ব্যাকগ্রাউন্ড কাজ পরিচালনা করতে সহায়ক, যেমন ডাটাবেস ব্যাকআপ, রিমাইন্ডার ইমেইল পাঠানো, রিপোর্ট জেনারেশন ইত্যাদি।
সারাংশ:
- EJB Timer Service হল একটি শক্তিশালী ফিচার যা EJB Beans এর মধ্যে সময় নির্ধারণ এবং নির্দিষ্ট সময় পরে কার্য সম্পন্ন করার জন্য ব্যবহৃত হয়।
- টাইমার ব্যবহার করে আপনি সিঙ্গল এবং ক্যালেন্ডার টাইমার তৈরি করতে পারেন এবং @Timeout অ্যানোটেশন ব্যবহার করে টাইমার কার্যকর করতে পারেন।
- EJB Timer Service সময়-ভিত্তিক কাজ যেমন ব্যাকগ্রাউন্ড কাজ, সিস্টেম রিমাইন্ডার ইমেইল পাঠানো, বা ডেলিভারি টাইম নির্ধারণ করতে সহায়তা করে।
- Stateless এবং Stateful EJB Beans উভয়ের জন্য Timer Service ব্যবহার করা সম্ভব, যা সহজে সময় নির্ধারণ করতে সাহায্য করে।
Read more