Apache ActiveMQ এর সঙ্গে Microservices ইন্টিগ্রেশন

Java Technologies - অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) ActiveMQ এবং Microservices Architecture |
157
157

Microservices আর্কিটেকচার ব্যবহারের ক্ষেত্রে, Apache ActiveMQ একটি শক্তিশালী মেসেজ ব্রোকার হিসেবে কাজ করে, যা বিভিন্ন মাইক্রোসার্ভিসের মধ্যে অ্যাসিনক্রোনাস মেসেজিং বা যোগাযোগ সহজ করে। Microservices মডেলে বিভিন্ন ছোট, স্বাধীনভাবে কার্যকরী সার্ভিস থাকে এবং এই সার্ভিসগুলোর মধ্যে মেসেজিং ব্যবস্থার জন্য অ্যাপাচি অ্যাকটিভএমকিউ বেশ কার্যকরী। এটি একাধিক সার্ভিসের মধ্যে মেসেজ পাঠানোর এবং গ্রহণ করার মাধ্যমে সিস্টেমের স্কেলেবিলিটি এবং কার্যক্ষমতা বৃদ্ধি করে।

এখানে, আমরা দেখব কিভাবে অ্যাপাচি অ্যাকটিভএমকিউ-কে Spring Boot ভিত্তিক Microservices এর মধ্যে ইন্টিগ্রেট করা যায় এবং মেসেজ প্রেরণ এবং গ্রহণের জন্য সেটআপ করা যায়।


১. Apache ActiveMQ এবং Microservices: কনসেপ্ট

Microservices হলো একটি আর্কিটেকচারাল স্টাইল যেখানে একটি অ্যাপ্লিকেশনকে ছোট ছোট স্বাধীন সার্ভিসে ভাগ করা হয়। এই সার্ভিসগুলো একে অপরের সাথে যোগাযোগ করতে পারে REST API, gRPC, SOAP, JMS (Java Message Service) বা অন্যান্য পদ্ধতির মাধ্যমে।

Apache ActiveMQ মেসেজিং সিস্টেমের মাধ্যমে Microservices-এর মধ্যে কমিউনিকেশন অ্যাসিনক্রোনাসভাবে করা হয়, যা মাইক্রোসার্ভিসগুলোর মধ্যে ডিকাপলিং এবং স্বাধীনভাবে স্কেল করা সম্ভব করে তোলে। এর মাধ্যমে মাইক্রোসার্ভিসগুলো একে অপরের সাথে মেসেজ শেয়ার করে বা ইভেন্ট ড্রিভেন আর্কিটেকচার তৈরি করে।

২. Spring Boot এবং ActiveMQ ইন্টিগ্রেশন

Spring Boot-এ ActiveMQ ইন্টিগ্রেশন খুবই সহজ এবং সরল। Spring Boot এর জন্য spring-boot-starter-activemq ডিপেনডেন্সি ব্যবহার করা হয়, যা অ্যাপাচি অ্যাকটিভএমকিউ-এর সঙ্গে যোগাযোগের জন্য প্রয়োজনীয় সকল কনফিগারেশন এবং টুলস সরবরাহ করে।

৩. Spring Boot অ্যাপ্লিকেশন তৈরি এবং ActiveMQ ইন্টিগ্রেট করা

১. Spring Boot প্রজেক্ট তৈরি করা

প্রথমে, Spring Initializr ব্যবহার করে একটি নতুন Spring Boot প্রজেক্ট তৈরি করুন। প্রজেক্টের জন্য নিম্নলিখিত ডিপেনডেন্সি যুক্ত করুন:

  • Spring Web
  • Spring JMS
  • ActiveMQ Artemis (JMS)

২. pom.xml ফাইলে ডিপেনডেন্সি যোগ করা

Spring Boot অ্যাপ্লিকেশনে ActiveMQ ইন্টিগ্রেট করতে, pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot Starter JMS for ActiveMQ -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-activemq</artifactId>
    </dependency>
</dependencies>

৩. application.properties কনফিগারেশন

এখন, application.properties ফাইলে ActiveMQ ব্রোকারের কনফিগারেশন যোগ করতে হবে:

# ActiveMQ কনফিগারেশন
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.in-memory=false

এখানে:

  • broker-url: ActiveMQ ব্রোকারের URL নির্ধারণ করে।
  • user এবং password: ActiveMQ ব্রোকারের ইউজারনেম এবং পাসওয়ার্ড।

৪. Spring JMS Configuration

Spring Boot অ্যাপ্লিকেশন থেকে ActiveMQ-তে সংযোগ স্থাপনের জন্য একটি কনফিগারেশন ক্লাস তৈরি করুন:

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.connection.CachingConnectionFactory;
import org.springframework.jms.core.JmsTemplate;

@Configuration
public class ActiveMQConfig {

    @Bean
    public ActiveMQConnectionFactory connectionFactory() {
        return new ActiveMQConnectionFactory("tcp://localhost:61616");
    }

    @Bean
    public CachingConnectionFactory cachingConnectionFactory(ActiveMQConnectionFactory connectionFactory) {
        return new CachingConnectionFactory(connectionFactory);
    }

    @Bean
    public JmsTemplate jmsTemplate(CachingConnectionFactory cachingConnectionFactory) {
        return new JmsTemplate(cachingConnectionFactory);
    }
}

৫. Message Producer (প্রোডিউসার)

ActiveMQ কিউতে মেসেজ প্রেরণের জন্য একটি প্রোডিউসার তৈরি করুন:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Component;

@Component
public class MessageProducer {

    @Autowired
    private JmsTemplate jmsTemplate;

    public void sendMessage(String message) {
        jmsTemplate.convertAndSend("testQueue", message);
    }
}

এখানে:

  • JmsTemplate.convertAndSend(): এটি ActiveMQ কিউতে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
  • "testQueue": এটি কিউয়ের নাম, যেখানে মেসেজটি প্রেরণ করা হবে।

৬. Message Consumer (কনজিউমার)

এখন, একটি কনজিউমার তৈরি করুন, যা কিউ থেকে মেসেজ গ্রহণ করবে:

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

@Component
public class MessageConsumer {

    @JmsListener(destination = "testQueue")
    public void receiveMessage(String message) {
        System.out.println("Received message: " + message);
    }
}

এখানে:

  • @JmsListener: এই অ্যানোটেশনটি কিউ থেকে মেসেজ গ্রহণ করার জন্য ব্যবহৃত হয়।

৭. Main Application Class

Spring Boot অ্যাপ্লিকেশন স্টার্ট করার জন্য @SpringBootApplication অ্যানোটেশন সহ একটি মূল ক্লাস তৈরি করুন:

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Autowired;

@SpringBootApplication
public class ActiveMQApplication implements CommandLineRunner {

    @Autowired
    private MessageProducer messageProducer;

    public static void main(String[] args) {
        SpringApplication.run(ActiveMQApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        messageProducer.sendMessage("Hello, ActiveMQ from Microservices!");
    }
}

এখানে:

  • CommandLineRunner: Spring Boot অ্যাপ্লিকেশন চালু হলে এটি MessageProducer ব্যবহার করে মেসেজ ActiveMQ কিউতে পাঠাবে।

৮. Spring Boot অ্যাপ্লিকেশন চালানো

Spring Boot অ্যাপ্লিকেশন চালানোর জন্য নিম্নলিখিত কমান্ডটি রান করুন:

mvn spring-boot:run

এটি Spring Boot অ্যাপ্লিকেশন চালু করবে এবং মেসেজ প্রোডিউসার ActiveMQ কিউতে একটি মেসেজ পাঠাবে। মেসেজ কনজিউমার কিউ থেকে মেসেজ গ্রহণ করবে এবং কনসোলে প্রিন্ট করবে।


৯. Microservices Architecture-এ ActiveMQ এর ব্যবহার

Microservices আর্কিটেকচারে ActiveMQ ব্যবহার করার সুবিধাগুলি:

  • ডিকাপলিং (Decoupling): Microservices মধ্যে একে অপরের সাথে মেসেজ আদান-প্রদান করার মাধ্যমে সার্ভিসগুলো একে অপরের থেকে স্বাধীন থাকে। ActiveMQ এই কমিউনিকেশনকে সহজ এবং অ্যাসিনক্রোনাসভাবে করে।
  • স্কেলেবিলিটি (Scalability): ActiveMQ বিভিন্ন সার্ভিসের মধ্যে মেসেজ শেয়ার করতে সাহায্য করে, যা সার্ভিসগুলোকে সহজে স্কেল করা যায়।
  • রিলায়েবিলিটি (Reliability): ActiveMQ-এর ডুরেবল কিউ এবং মেসেজ পারসিস্টেন্স ফিচার সিস্টেমের রিলায়েবিলিটি নিশ্চিত করে।
  • ইভেন্ট ড্রিভেন আর্কিটেকচার: ActiveMQ ইভেন্ট ড্রিভেন আর্কিটেকচারের জন্য উপযুক্ত, যেখানে সার্ভিসগুলো মেসেজ পেয়ে নিজেদের কাজ সম্পাদন করে।

সারাংশ

Apache ActiveMQ এবং Spring Boot এর ইন্টিগ্রেশন মাইক্রোসার্ভিস আর্কিটেকচারে মেসেজ ভিত্তিক যোগাযোগ ব্যবস্থা তৈরিতে সহায়ক। ActiveMQ ব্রোকারের মাধ্যমে, মাইক্রোসার্ভিসগুলো একে অপরের সাথে মেসেজ শেয়ার করতে পারে এবং অ্যাসিনক্রোনাসভাবে কাজ করতে পারে, যার ফলে সিস্টেমটি আরও স্কেলেবল এবং রিলায়েবল হয়। Spring Boot অ্যাপ্লিকেশনটি সহজে ActiveMQ-কে ইন্টিগ্রেট করতে পারে এবং মেসেজ প্রোডিউসার এবং কনজিউমার তৈরি করতে সক্ষম হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion