অ্যাপাচি অ্যাকটিভএমকিউ একটি শক্তিশালী মেসেজ ব্রোকার সিস্টেম, যা উন্নত মেসেজ ডেলিভারি অপশন (Advanced Message Delivery Options) প্রদান করে। এই অপশনগুলির মাধ্যমে, আপনি মেসেজ ডেলিভারির কার্যকারিতা, নির্ভরযোগ্যতা এবং স্কেলেবিলিটি নিয়ন্ত্রণ করতে পারেন। এগুলি বিশেষভাবে ব্যবহৃত হয় যখন ডিস্ট্রিবিউটেড সিস্টেমে বা বড় অ্যাপ্লিকেশনে মেসেজিং সিস্টেমের জন্য উন্নত কনফিগারেশন প্রয়োজন হয়।
এই অপশনগুলি কনফিগার করে, আপনি মেসেজ ডেলিভারি মেকানিজমে আরও সূক্ষ্ম নিয়ন্ত্রণ প্রতিষ্ঠা করতে পারবেন, যেমন মেসেজের ডেলিভারি গ্যারান্টি, ডেড লেটার কিউ (Dead Letter Queue), মেসেজ সিকোয়েন্সিং, এবং ফ্লো কন্ট্রোল।
মেসেজ একনলেজমেন্ট (Acknowledgement) হলো প্রক্রিয়া যেখানে প্রোডিউসার বা কনসিউমার নিশ্চিত করে যে মেসেজ সফলভাবে প্রেরিত বা গ্রহণ করা হয়েছে। অ্যাপাচি অ্যাকটিভএমকিউ বিভিন্ন একনলেজমেন্ট মোড সমর্থন করে, যা মেসেজের ডেলিভারি নির্ভরযোগ্যতা বাড়ায়।
// Example of session with AUTO_ACKNOWLEDGE
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Dead Letter Queue (DLQ) এমন একটি কিউ যেখানে মেসেজগুলি পাঠানো হয় যখন একটি মেসেজ কনসিউমার দ্বারা সঠিকভাবে গ্রহণ করা যায় না। এটি বিশেষভাবে সহায়ক যখন একটি মেসেজ প্রক্রিয়াকরণে ত্রুটি ঘটে (যেমন, মেসেজ কনসিউমারের কোনো কারণে মেসেজ গ্রহণ করতে অক্ষম)।
অ্যাপাচি অ্যাকটিভএমকিউ তে ডেড লেটার কিউ কনফিগার করতে activemq.xml
ফাইলে নিম্নলিখিত কনফিগারেশন ব্যবহার করা হয়:
<destinationPolicy>
<policyMap>
<policyEntry queue=">" deadLetterStrategy="persistent" />
</policyMap>
</destinationPolicy>
এটি নিশ্চিত করে যে, মেসেজ কনসিউমার গ্রহণ না করলে, তা ডেড লেটার কিউতে চলে যাবে।
Message Redelivery ফিচারটি কনসিউমারের কাছে মেসেজ গ্রহণের জন্য আরও একাধিক প্রচেষ্টা করার জন্য ব্যবহৃত হয়। যদি মেসেজ গ্রহণের সময় কোনো ত্রুটি ঘটে, অ্যাপাচি অ্যাকটিভএমকিউ স্বয়ংক্রিয়ভাবে সেই মেসেজটিকে পুনরায় কনসিউমারের কাছে পাঠাবে, যতক্ষণ না তা সফলভাবে গ্রহণ না হয়।
<destinationPolicy>
<policyMap>
<policyEntry queue=">" redeliveryDelay="5000" maximumRedeliveries="5" />
</policyMap>
</destinationPolicy>
এখানে, redeliveryDelay
নির্ধারণ করে কতক্ষণ পর পর মেসেজ পুনরায় পাঠানো হবে এবং maximumRedeliveries
নির্ধারণ করে সর্বোচ্চ কতবার মেসেজ পুনরায় পাঠানো হবে।
Message Expiry হল একটি অপশন যা নিশ্চিত করে যে মেসেজটি একটি নির্দিষ্ট সময়ের পরে অকার্যকর হয়ে যাবে এবং কিউ বা টপিক থেকে সরিয়ে নেওয়া হবে। এটি বিশেষভাবে ব্যবহৃত হয় যেখানে মেসেজের কোনো নির্দিষ্ট টাইমলাইনের মধ্যে প্রক্রিয়া হওয়া দরকার।
<destinationPolicy>
<policyMap>
<policyEntry queue=">" expiry="60000" />
</policyMap>
</destinationPolicy>
এখানে, expiry="60000"
মানে মেসেজটির জন্য ৬০ সেকেন্ডের সময়সীমা নির্ধারণ করা হয়েছে। ৬০ সেকেন্ড পরে, মেসেজটি ডিলিট হয়ে যাবে।
Flow Control হল একটি মেকানিজম যা মেসেজ ব্রোকারের সাথে সংযুক্ত সিস্টেমের মধ্যে ডেটা ট্রান্সফারের গতি নিয়ন্ত্রণ করে। এটি বিশেষভাবে ব্যবহৃত হয় যাতে মেসেজ সিস্টেমে অতিরিক্ত লোড না পড়ে এবং ব্রোকার সিস্টেম সঠিকভাবে কাজ করে।
<destinationPolicy>
<policyMap>
<policyEntry queue=">" memoryLimit="10485760" />
</policyMap>
</destinationPolicy>
এটি কিউয়ের জন্য মেমরি সীমা নির্ধারণ করে। যখন কিউ মেমরি সীমায় পৌঁছাবে, তখন নতুন মেসেজ গ্রহণ করা বন্ধ হয়ে যাবে এবং সিস্টেমের ওপর লোড কমানো হবে।
অ্যাপাচি অ্যাকটিভএমকিউ মেসেজ প্রেরণের ক্ষেত্রে প্রায়োরিটি সিস্টেমও সমর্থন করে। এটি ব্যবহারকারীদের মেসেজের প্রাধান্য নির্ধারণ করতে সাহায্য করে, যেমন কিছু মেসেজ দ্রুত প্রক্রিয়া করা উচিত এবং কিছু মেসেজ কম গুরুত্বপূর্ণ।
<destinationPolicy>
<policyMap>
<policyEntry queue=">" priority="5" />
</policyMap>
</destinationPolicy>
এখানে, priority="5"
সেট করা হয়েছে, যা কিউতে আসা মেসেজের প্রাধান্য নির্ধারণ করে। প্রাধান্য ০ থেকে ৯ পর্যন্ত থাকে, যেখানে ০ সর্বনিম্ন এবং ৯ সর্বোচ্চ।
অ্যাপাচি অ্যাকটিভএমকিউ Advanced Message Delivery Options প্রদান করে, যা মেসেজ ডেলিভারির নিয়ন্ত্রণ, নির্ভরযোগ্যতা এবং পারফরম্যান্স নিশ্চিত করে। এগুলির মধ্যে Message Acknowledgement, Dead Letter Queue (DLQ), Message Redelivery, Message Expiry, Flow Control, এবং Message Prioritization উল্লেখযোগ্য। এই অপশনগুলো ব্যবহারের মাধ্যমে আপনি মেসেজ সিস্টেমের কার্যক্ষমতা এবং নির্ভরযোগ্যতা উন্নত করতে পারবেন, বিশেষ করে ডিস্ট্রিবিউটেড সিস্টেমে বা বড় অ্যাপ্লিকেশনগুলির মধ্যে যেখানে ডেটা এবং মেসেজ ম্যানেজমেন্ট অত্যন্ত গুরুত্বপূর্ণ।
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 ভবিষ্যতের কোনো নির্দিষ্ট সময়ে মেসেজ পাঠানোর জন্য কনফিগার করা হয়। এই বৈশিষ্ট্যগুলি ব্যবহৃত হয় টাইম-ক্রিটিক্যাল অ্যাপ্লিকেশনগুলির জন্য, যেমন বিলিং সিস্টেম, পেন্ডিং অর্ডার প্রসেসিং, বা টাস্ক শিডিউলিং সিস্টেমে।
অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) মেসেজ পাসিং এবং ট্রান্সপোর্ট সিস্টেমের জন্য একটি অত্যন্ত শক্তিশালী ব্রোকার সিস্টেম। এই সিস্টেমে Message Redelivery এবং Dead Letter Queue (DLQ) ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ, কারণ মেসেজের প্রক্রিয়া ত্রুটিপূর্ণ হলে বা নির্দিষ্ট শর্ত পূরণ না হলে, সেগুলি সঠিকভাবে পরিচালনা করতে হয়।
Message Redelivery হল এমন একটি প্রক্রিয়া যার মাধ্যমে কোনো মেসেজ প্রথমবার প্রক্রিয়া করা না হলে, সেটি পুনরায় পাঠানো হয় (redelivered)।
মেসেজ রেডেলিভারি সাধারণত তখন ঘটে যখন:
অ্যাকটিভএমকিউ-এ মেসেজ রেডেলিভারি কিছু কনফিগারেশনের মাধ্যমে নিয়ন্ত্রণ করা হয়, যাতে কোনো মেসেজ বারবার কনজিউমারের কাছে পাঠানো না হয়।
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" redeliveryDelay="5000" maximumRedeliveries="5"/>
</policyEntries>
</policyMap>
</destinationPolicy>
এখানে:
এটি নিশ্চিত করে যে, কনজিউমার যদি মেসেজটি ৫ বার রেডেলিভারি করার পরও গ্রহণ না করতে পারে, তবে সেটি DLQ-তে স্থানান্তরিত হবে।
Dead Letter Queue (DLQ) একটি বিশেষ কিউ যা মেসেজের জন্য ব্যবহৃত হয় যখন সেগুলিকে নির্দিষ্ট শর্ত পূরণ করতে ব্যর্থ হয়, যেমন মেসেজ বারবার রেডেলিভারি করা হয়েছে, তবে তা কনজিউমারের কাছে সফলভাবে প্রসেস করা সম্ভব হয়নি।
DLQ ব্যবস্থাপনার উদ্দেশ্য:
অ্যাকটিভএমকিউ-এ Dead Letter Queue ব্যবস্থাপনার জন্য কনফিগারেশন করা হয়। সাধারণত, DLQ কিউটি সেট করার সময় এক বা একাধিক শর্ত নির্ধারণ করা হয় যা মেসেজগুলোকে ডেড লেটার কিউতে স্থানান্তরিত করবে।
<broker xmlns="http://activemq.apache.org/schema/core"
brokerName="localhost"
dataDirectory="${activemq.data}">
<!-- Configuring Dead Letter Queue -->
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ."/>
</deadLetterStrategy>
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" deadLetterStrategy="#individualDeadLetterStrategy"/>
</policyEntries>
</policyMap>
</destinationPolicy>
<transportConnectors>
<transportConnector uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
এখানে:
DLQ.someQueueName
।একাধিক কারণ হতে পারে যখন মেসেজ DLQ-তে স্থানান্তরিত হয়, যেমন:
redeliveryDelay
এবং maximumRedeliveries
কনফিগারেশনের মাধ্যমে নিয়ন্ত্রিত হয়।এই ব্যবস্থাগুলি অ্যাপাচি অ্যাকটিভএমকিউ-তে মেসেজ সিস্টেমের রিলায়েবিলিটি এবং কার্যক্ষমতা বজায় রাখতে সহায়ক।
অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) একটি শক্তিশালী মেসেজ ব্রোকার যা মেসেজিং সিস্টেমে উচ্চ কার্যকারিতা এবং নির্ভরযোগ্যতা প্রদান করে। মেসেজ প্রেরণ এবং গ্রহণের প্রক্রিয়ায় Message Prioritization (মেসেজ প্রাধান্যকরণ) এবং Delivery Guarantee (ডেলিভারি গ্যারান্টি) দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এই দুটি বৈশিষ্ট্য মেসেজ সিস্টেমে কার্যক্ষমতা এবং নির্ভরযোগ্যতা বৃদ্ধির জন্য অত্যন্ত গুরুত্বপূর্ণ।
Message Prioritization হল একটি প্রক্রিয়া যার মাধ্যমে আপনি মেসেজগুলোর গুরুত্ব বা প্রাধান্য নির্ধারণ করতে পারেন। এর মাধ্যমে, আপনি নিশ্চিত করতে পারবেন যে গুরুত্বপূর্ণ মেসেজগুলি আগে প্রক্রিয়া করা হবে এবং কম গুরুত্বপূর্ণ মেসেজগুলি পরবর্তী সময়ে প্রক্রিয়া হবে।
অ্যাপাচি অ্যাকটিভএমকিউতে, মেসেজ প্রাধান্যকরণ ব্যবস্থাটি JMS Priority ব্যবহার করে কাজ করে। মেসেজের Priority নির্ধারণ করা হয় একটি স্কেল (0-9) এর মাধ্যমে, যেখানে 0 হলো সর্বনিম্ন_PRIORITY এবং 9 হলো সর্বোচ্চ_PRIORITY। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনার কিছু মেসেজ দ্রুত প্রক্রিয়া করতে হয়, যেমন জরুরি নোটিফিকেশন বা গুরুত্বপূর্ণ তথ্য।
Priority Set করা: প্রোডিউসার কোডে, আপনি মেসেজের প্রাধান্য সেট করতে পারেন। উদাহরণস্বরূপ, মেসেজের priority 9 (সর্বোচ্চ) সেট করা হলো:
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class PriorityMessageProducer {
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("PriorityQueue");
MessageProducer producer = session.createProducer(destination);
// Set the message priority (highest priority)
producer.setPriority(9); // Highest priority
TextMessage message = session.createTextMessage("This is a high-priority message");
producer.send(message);
System.out.println("Message sent with priority: " + message.getJMSPriority());
connection.close();
}
}
এখানে, setPriority(9) ব্যবহৃত হয়েছে, যার ফলে এই মেসেজটি সর্বোচ্চ প্রাধান্য (9) পাবে এবং অন্য মেসেজগুলির তুলনায় প্রথমে প্রক্রিয়া হবে।
কনজিউমার সাইডে Priority Handling: কনজিউমার সাইডে, আপনি কনজিউমারকে একটি কিউ থেকে মেসেজ গ্রহণ করতে পারবেন এবং প্রাধান্য অনুসারে মেসেজের প্রক্রিয়া দেখতে পারবেন। উদাহরণ:
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class PriorityMessageConsumer {
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("PriorityQueue");
MessageConsumer consumer = session.createConsumer(destination);
// Receiving the message
Message message = consumer.receive();
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
System.out.println("Received message with priority: " + textMessage.getJMSPriority());
System.out.println("Message: " + textMessage.getText());
}
connection.close();
}
}
এই কোডে, কনজিউমার মেসেজ গ্রহণ করার সময় মেসেজের প্রাধান্য দেখতে পারে।
Delivery Guarantee হল একটি মেসেজিং প্রটোকল বা কৌশল, যা মেসেজের নির্ভরযোগ্য প্রেরণ নিশ্চিত করে। অ্যাপাচি অ্যাকটিভএমকিউতে দুটি প্রধান ডেলিভারি গ্যারান্টি রয়েছে:
Persistent Delivery (Persistent Delivery Guarantee): অ্যাপাচি অ্যাকটিভএমকিউতে Persistent মেসেজগুলি ডাটাবেস বা ফাইল সিস্টেমে সংরক্ষিত থাকে, তাই মেসেজটি যদি কোনো কারণে হারিয়ে যায়, তবে এটি পুনরুদ্ধার করা সম্ভব হয়।
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class PersistentMessageProducer {
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("PersistentQueue");
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT); // Ensuring persistent delivery
TextMessage message = session.createTextMessage("This is a persistent message");
producer.send(message);
System.out.println("Message sent with persistent delivery");
connection.close();
}
}
এখানে, setDeliveryMode(DeliveryMode.PERSISTENT) ব্যবহার করে মেসেজের ডেলিভারি মোডে Persistent গ্যারান্টি সেট করা হয়েছে, যার মানে হলো মেসেজটি হারানো যাবে না এবং সিস্টেম পুনরুদ্ধার হলে এটি পুনরুদ্ধার করা যাবে।
Non-Persistent Delivery (Non-Persistent Delivery Guarantee): যদি আপনি মেসেজ দ্রুত পাঠাতে চান এবং পারফরম্যান্সের জন্য কিছু কম্প্রোমাইজ করতে চান, তবে আপনি Non-Persistent ডেলিভারি মোড ব্যবহার করতে পারেন, যা মেসেজকে মেমরি (RAM) তে রেখে দ্রুত প্রক্রিয়া করে।
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); // Non-persistent delivery
এই ক্ষেত্রে, মেসেজটি মেমরি (RAM) তে সঞ্চিত থাকবে এবং সিস্টেম পুনরায় চালু হলে তা হারিয়ে যাবে।
বৈশিষ্ট্য | Message Prioritization | Delivery Guarantee |
---|---|---|
ফাংশন | মেসেজগুলোর অগ্রাধিকার বা প্রাধান্য নির্ধারণ করা | মেসেজের নির্ভরযোগ্য ডেলিভারি নিশ্চিত করা |
ব্যবহার | গুরুত্বপূর্ণ মেসেজ দ্রুত প্রক্রিয়া করতে ব্যবহৃত | মেসেজ হারানো যাবে না বা নির্ভরযোগ্য ডেলিভারি |
সাপোর্ট | 0 থেকে 9 পর্যন্ত প্রাধান্য স্কেল | Persistent, Non-Persistent, At-least-once, Exactly-once |
প্রকার | দ্রুত প্রক্রিয়া ও পারফরম্যান্সের জন্য | নির্ভরযোগ্যতা এবং মেসেজ ডেলিভারি গ্যারান্টি |
অ্যাপাচি অ্যাকটিভএমকিউ Message Prioritization এবং Delivery Guarantee এর মাধ্যমে মেসেজ সিস্টেমের কার্যক্ষমতা এবং নির্ভরযোগ্যতা নিশ্চিত করা যায়। Priority ব্যবহারের মাধ্যমে আপনি মেসেজগুলোর অগ্রাধিকার নির্ধারণ করতে পারেন, এবং Delivery Guarantee দ্বারা মেসেজ ডেলিভারির নির্ভরযোগ্যতা নিশ্চিত করতে পারেন। এই দুটি বৈশিষ্ট্য একসাথে মেসেজ ব্রোকারের কার্যক্ষমতা এবং নিরাপত্তা বৃদ্ধি করতে সহায়ক।
common.read_more