Delayed Delivery এবং Scheduled Messages অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ)-এ দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা আপনাকে মেসেজগুলিকে নির্দিষ্ট সময় পর প্রেরণ বা গ্রহণ করতে সক্ষম করে। এই বৈশিষ্ট্যগুলি বিভিন্ন ব্যবহারিক ক্ষেত্রে কার্যকর, যেমন ডিলেইড অর্ডার প্রক্রিয়াকরণ, প্ল্যানড টাস্ক এক্সিকিউশন, এবং ট্রানজ্যাকশনাল সিস্টেম যেখানে সময় নির্ধারণ করে কাজ করা প্রয়োজন।
Delayed Delivery হলো একটি প্রক্রিয়া যেখানে একটি মেসেজ নির্দিষ্ট সময় পরে ডেলিভারি হয়, বা মেসেজটির ডেলিভারি ডিলে করা হয়। এই ফিচারটি ব্যবহৃত হয় যখন আপনি একটি মেসেজের ডেলিভারি নির্দিষ্ট কোনো সময়ের জন্য স্থগিত রাখতে চান।
অ্যাপাচি অ্যাকটিভএমকিউ তে Delayed Delivery কনফিগার করতে, আপনি মেসেজের প্রপার্টি হিসাবে JMS_deliveryTime
সেট করতে পারেন। এতে, মেসেজটি নির্দিষ্ট সময় পর্যন্ত কিউতে স্থিত থাকবে এবং সেই সময় পরে কেবল ডেলিভারি হবে।
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class DelayedMessageProducer {
public static void main(String[] args) throws JMSException {
// ActiveMQ কনফিগারেশন
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
// সেশন তৈরি করা
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// ডেস্টিনেশন তৈরি করা (Queue বা Topic)
Destination destination = session.createQueue("TEST.QUEUE");
// মেসেজ প্রডিউসার তৈরি
MessageProducer producer = session.createProducer(destination);
// মেসেজ তৈরি
TextMessage message = session.createTextMessage("Delayed Message");
// Delayed Delivery এর জন্য deliveryTime প্রপার্টি সেট করা
long delay = 5000; // 5 সেকেন্ড ডিলে
producer.setDeliveryDelay(delay);
// মেসেজ প্রেরণ
producer.send(message);
System.out.println("Message Sent with Delay: " + message.getText());
// সংযোগ বন্ধ করা
producer.close();
session.close();
connection.close();
}
}
এখানে:
producer.setDeliveryDelay(delay);
: এই লাইনটি মেসেজটি প্রেরণের আগে 5 সেকেন্ডের ডিলে প্রযোজ্য করবে।delay
: এটি সময় (মিলিসেকেন্ড) যা মেসেজের ডেলিভারিতে বিলম্ব করবে।Scheduled Messages অ্যাপাচি অ্যাকটিভএমকিউ এর আরেকটি শক্তিশালী বৈশিষ্ট্য, যা মেসেজকে নির্দিষ্ট সময়ে বা নির্দিষ্ট দিন ও সময়ের জন্য শিডিউল করতে দেয়। এটি মূলত timer-based message delivery হিসেবে কাজ করে, যেখানে আপনি সিস্টেমে কোনো নির্দিষ্ট সময়ে মেসেজ পাঠানোর জন্য সেট করতে পারেন।
Scheduled messages তৈরি করতে, আপনি JMS deliveryTime ব্যবহার করেন, যা নির্দিষ্ট সময়ের জন্য মেসেজের ডেলিভারি নির্ধারণ করে।
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class ScheduledMessageProducer {
public static void main(String[] args) throws JMSException {
// ActiveMQ কনফিগারেশন
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
// সেশন তৈরি করা
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// ডেস্টিনেশন তৈরি করা (Queue বা Topic)
Destination destination = session.createQueue("TEST.QUEUE");
// মেসেজ প্রডিউসার তৈরি
MessageProducer producer = session.createProducer(destination);
// মেসেজ তৈরি
TextMessage message = session.createTextMessage("Scheduled Message");
// Scheduled Delivery এর জন্য deliveryTime সেট করা
long scheduledTime = System.currentTimeMillis() + 10000; // 10 সেকেন্ড পর মেসেজ শিডিউল হবে
producer.setDeliveryDelay(scheduledTime - System.currentTimeMillis());
// মেসেজ প্রেরণ
producer.send(message);
System.out.println("Message Sent at scheduled time: " + message.getText());
// সংযোগ বন্ধ করা
producer.close();
session.close();
connection.close();
}
}
এখানে:
setDeliveryDelay(scheduledTime - System.currentTimeMillis())
: এটি মেসেজের শিডিউল সময় নির্ধারণ করে এবং সেই অনুযায়ী মেসেজটি ডেলিভারি হবে।বৈশিষ্ট্য | Delayed Delivery | Scheduled Messages |
---|---|---|
ব্যবহার | মেসেজ পাঠানোর পর কিছু সময়ের জন্য ডিলে করা হয় | নির্দিষ্ট সময় বা নির্দিষ্ট দিনে মেসেজ পাঠানো হয় |
উদাহরণ | কিছু সেকেন্ড পরে মেসেজ পাঠানো | একটি নির্দিষ্ট তারিখে বা সময়ে মেসেজ পাঠানো |
বিলম্বের সময় নির্ধারণ | সময় নির্দিষ্ট করা হয়, তবে এটি কার্যকর হলে মেসেজ প্রেরণ হয় | একটি নির্দিষ্ট ভবিষ্যৎ সময় নির্ধারণ করা হয় |
সাধারণ ব্যবহার ক্ষেত্র | অর্ডার প্রক্রিয়া বিলম্বিত করা, ইভেন্ট সিস্টেমের বিলম্বিত কার্যক্রম | শিডিউলড টাস্ক, সপ্তাহিক বা মাসিক রিপোর্ট পাঠানো |
Delayed Delivery এবং Scheduled Messages অ্যাপাচি অ্যাকটিভএমকিউ এর শক্তিশালী মেসেজিং বৈশিষ্ট্য, যা আপনাকে মেসেজের ডেলিভারি সময় নির্ধারণ করতে সাহায্য করে। Delayed Delivery একটি মেসেজের ডেলিভারি বিলম্বিত করে নির্দিষ্ট সময় পরে পাঠায়, যখন Scheduled Messages ভবিষ্যতের কোনো নির্দিষ্ট সময়ে মেসেজ পাঠানোর জন্য কনফিগার করা হয়। এই বৈশিষ্ট্যগুলি ব্যবহৃত হয় টাইম-ক্রিটিক্যাল অ্যাপ্লিকেশনগুলির জন্য, যেমন বিলিং সিস্টেম, পেন্ডিং অর্ডার প্রসেসিং, বা টাস্ক শিডিউলিং সিস্টেমে।
common.read_more