অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) একটি শক্তিশালী মেসেজ ব্রোকার যা বিভিন্ন ধরনের মেসেজ রাউটিং এবং ফিল্টারিং সমর্থন করে। Message Routing বা মেসেজ রাউটিং হল প্রক্রিয়া যার মাধ্যমে মেসেজগুলো সঠিক ভোক্তা (consumer) বা গন্তব্য (destination) তে পৌঁছানো হয়। কখনও কখনও, মেসেজ রাউটিং করার জন্য Complex Filtering (যেমন, বিভিন্ন শর্ত বা কন্ডিশনের মাধ্যমে মেসেজ বাছাই করা) ব্যবহার করা হয়, যাতে একটি ব্রোকার থেকে অনেকগুলো মেসেজে থেকে সঠিক মেসেজটি চয়ন করা যায়।
অ্যাকটিভএমকিউ-এর complex filtering ব্যবহারের মাধ্যমে আপনি সহজে মেসেজগুলোকে বিভিন্ন কন্ডিশনের ভিত্তিতে ফিল্টার করতে পারেন। এটি বিশেষভাবে তখন প্রয়োজনীয়, যখন বিভিন্ন ভোক্তা একই কিউ বা টপিক থেকে মেসেজ গ্রহণ করছেন, এবং কিছু ভোক্তার জন্য কিছু নির্দিষ্ট মেসেজ পাঠানো প্রয়োজন।
অ্যাকটিভএমকিউ JMS selectors এবং Message Properties ব্যবহার করে মেসেজ ফিল্টারিং এবং রাউটিং পরিচালনা করতে পারে। JMS selectors
একটি SQL-like syntax ব্যবহার করে মেসেজের কিছু প্রপার্টির উপর ভিত্তি করে মেসেজ ফিল্টার করার সুযোগ দেয়।
JMSMessageID
, JMSCorrelationID
, JMSPriority
, এবং কাস্টম প্রপার্টি ব্যবহার করে মেসেজ ফিল্টার করতে সাহায্য করে।age > 30
বা color = 'red'
এর মতো শর্তে মেসেজ ফিল্টার করতে পারেন।category
, যা নির্দিষ্ট শ্রেণীভুক্ত মেসেজগুলো আলাদা করতে সাহায্য করবে।JMS selector
ব্যবহার করে নির্দিষ্ট শর্ত বা কন্ডিশন দিয়ে ফিল্টার করা হয়। যেমন, category='electronics'
শর্তে শুধু electronics
ক্যাটেগরির মেসেজগুলো গ্রহণ করা যাবে।import javax.jms.*;
public class Producer {
public void sendMessage(Session session, MessageProducer producer) throws JMSException {
TextMessage message = session.createTextMessage("This is a test message");
message.setStringProperty("category", "electronics"); // Setting custom property
producer.send(message);
}
}
import javax.jms.*;
public class Consumer {
public void receiveMessage(Session session, MessageConsumer consumer) throws JMSException {
// Using a JMS selector to filter messages based on the category property
String selector = "category = 'electronics'";
MessageConsumer filteredConsumer = session.createConsumer(queue, selector);
TextMessage message = (TextMessage) filteredConsumer.receive();
if (message != null) {
System.out.println("Received message: " + message.getText());
}
}
}
এখানে:
category
নামে একটি কাস্টম প্রপার্টি যোগ করেছে, যেটি electronics
নামে সেট করা হয়েছে।category='electronics'
প্রপার্টি যুক্ত মেসেজগুলো গ্রহণ করবে।এছাড়া, অ্যাকটিভএমকিউ-এ আপনি কিউ বা টপিক কনফিগারেশনের সময় JMS selectors
ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" messageSelector="category = 'electronics'"/>
</policyEntries>
</policyMap>
</destinationPolicy>
এখানে, category = 'electronics'
মেসেজটি কেবলমাত্র সেসব কনজিউমারকে পাঠানো হবে যারা এই শর্তে সাবস্ক্রাইব করেছে।
এই ফিচারটি অ্যাকটিভএমকিউ-কে আরও গতিশীল এবং কার্যকরী মেসেজ ব্রোকার হিসেবে পরিণত করে।