Message-driven microservices (MMS) মডেল ব্যবহার করে আপনি এমন মাইক্রোসার্ভিস তৈরি করতে পারেন যা Asynchronous মেসেজ প্রক্রিয়া করে। এতে মেসেজিং সিস্টেম (যেমন অ্যাপাচি অ্যাকটিভএমকিউ) ব্যবহৃত হয়, যা সিস্টেমের মধ্যে মেসেজ আদান-প্রদান করে। মেসেজ-ড্রিভেন আর্কিটেকচার অত্যন্ত স্কেলেবল এবং রিলায়েবল, যা মাইক্রোসার্ভিস সিস্টেমের মধ্যে সেবা নিরবচ্ছিন্নভাবে একে অপরের সাথে যোগাযোগ করতে সহায়তা করে।
এখানে আমরা আলোচনা করব কিভাবে অ্যাপাচি অ্যাকটিভএমকিউ ব্যবহার করে Message-driven microservices ডিজাইন এবং ইমপ্লিমেন্ট করা যায়।
Message-driven Microservices (MMS) হলো একটি আর্কিটেকচারাল প্যাটার্ন যেখানে বিভিন্ন মাইক্রোসার্ভিস একে অপরের সাথে asynchronous messaging এর মাধ্যমে যোগাযোগ করে। মাইক্রোসার্ভিসগুলো মেসেজ কিউ বা টপিকের মাধ্যমে মেসেজ পাঠায় এবং গ্রহণ করে, যা মূলত message brokers (যেমন অ্যাপাচি অ্যাকটিভএমকিউ) ব্যবহার করে পরিচালিত হয়।
এটি ব্যবহার করার মাধ্যমে:
Message-driven মাইক্রোসার্ভিস ডিজাইনে কয়েকটি মূল উপাদান থাকে:
Spring Boot এবং Apache ActiveMQ ব্যবহার করে Message-driven Microservices ডিজাইন এবং ইমপ্লিমেন্ট করার জন্য, নিচের স্টেপগুলি অনুসরণ করা যেতে পারে।
প্রথমে, Spring Boot অ্যাপ্লিকেশন এবং Apache ActiveMQ এর জন্য প্রয়োজনীয় ডিপেনডেন্সি pom.xml
ফাইলে যুক্ত করুন:
<dependencies>
<!-- Spring Boot Starter Web for creating REST API -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter JMS for working with message brokers like ActiveMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- Spring Boot Starter JMS for messaging -->
<dependency>
<groupId>org.springframework.jms</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<!-- Apache ActiveMQ dependency -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
Spring Boot অ্যাপ্লিকেশনের জন্য application.properties ফাইলে ActiveMQ এর কনফিগারেশন যুক্ত করুন:
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.in-memory=false
spring.activemq.packages.trust-all=true
প্রোডিউসার (Sender) একটি মাইক্রোসার্ভিস যা অ্যাকটিভএমকিউ কিউতে মেসেজ পাঠাবে।
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
@Service
public class MessageProducer {
private final JmsTemplate jmsTemplate;
private final String destination = "testQueue"; // Queue Name
public MessageProducer(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
public void sendMessage(String message) {
jmsTemplate.convertAndSend(destination, message);
System.out.println("Sent message: " + message);
}
}
কনজিউমার (Listener) একটি মাইক্রোসার্ভিস যা কিউ থেকে মেসেজ গ্রহণ করবে এবং প্রক্রিয়া করবে।
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;
@Service
public class MessageListener {
// Listen to the 'testQueue' for incoming messages
@JmsListener(destination = "testQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
স্প্রিং রেস্ট কন্ট্রোলার তৈরি করা যাতে HTTP রিকোয়েস্টের মাধ্যমে প্রোডিউসার মেসেজ পাঠাতে পারে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MessageController {
@Autowired
private MessageProducer messageProducer;
@GetMapping("/send")
public String sendMessage(@RequestParam String message) {
messageProducer.sendMessage(message);
return "Message sent: " + message;
}
}
এখানে, /send?message=HelloActiveMQ URL এ GET রিকোয়েস্ট পাঠিয়ে আপনি মেসেজ প্রেরণ করতে পারবেন।
Message-driven Microservices ডিজাইন এবং ইমপ্লিমেন্ট করার মাধ্যমে আপনি অ্যাসিঙ্ক্রোনাস মেসেজিং সিস্টেম তৈরি করতে পারেন, যেখানে Producer মেসেজ পাঠায় এবং Consumer মেসেজ গ্রহণ করে। Spring Boot এবং Apache ActiveMQ ব্যবহার করে এটি সহজে বাস্তবায়ন করা সম্ভব। এটি সিস্টেমের স্কেলেবিলিটি এবং পারফরম্যান্স বৃদ্ধি করতে সাহায্য করে, কারণ মাইক্রোসার্ভিসগুলো একে অপরের সাথে সহজভাবে যোগাযোগ করতে পারে এবং স্বতন্ত্রভাবে কাজ করতে পারে।
common.read_more