Spring Boot এর মাধ্যমে Message Listener এবং Sender তৈরি

Java Technologies - অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) Apache ActiveMQ এর সঙ্গে Spring Boot ইন্টিগ্রেশন |
139
139

অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) এবং Spring Boot এর মাধ্যমে মেসেজ প্রেরণ (Sender) এবং গ্রহণ (Listener) একটি জনপ্রিয় প্যাটার্ন যা অ্যাসিঙ্ক্রোনাস মেসেজিং সিস্টেম তৈরি করতে ব্যবহৃত হয়। Spring Boot এবং অ্যাপাচি অ্যাকটিভএমকিউ-এর সমন্বয়ে আপনি সহজেই প্রোডিউসার (Sender) এবং কনজিউমার (Listener) তৈরি করতে পারেন।

এখানে আমরা দেখব কিভাবে Spring Boot এর সাহায্যে Message Sender এবং Message Listener তৈরি করা যায় অ্যাপাচি অ্যাকটিভএমকিউ ব্যবহার করে।


প্রয়োজনীয় ডিপেনডেন্সি

প্রথমে, pom.xml ফাইলে অ্যাপাচি অ্যাকটিভএমকিউ এবং স্প্রিং অ্যামকিউ (Spring ActiveMQ) ডিপেনডেন্সি যুক্ত করতে হবে:

<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 এর মাধ্যমে Message Sender (Producer) তৈরি করা

এখন আমরা একটি Message Sender তৈরি করব যা অ্যাপাচি অ্যাকটিভএমকিউ ব্রোকারে মেসেজ পাঠাবে।

  1. ActiveMQ Configuration:

    অ্যাপাচি অ্যাকটিভএমকিউ কনফিগারেশন Spring Boot অ্যাপ্লিকেশনে করার জন্য, application.properties ফাইলে কনফিগারেশন যুক্ত করতে হবে।

    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
    

    এখানে:

    • broker-url: অ্যাকটিভএমকিউ ব্রোকারের URL (ডিফল্ট পোর্ট: 61616)।
    • user/password: অ্যাকটিভএমকিউ ব্রোকারের ইউজারনেম এবং পাসওয়ার্ড।
    • in-memory=false: ডিস্কে মেসেজ স্টোরেজ সক্রিয় করা।
  2. Message Sender (Producer) কনফিগারেশন:

    মেসেজ প্রেরণের জন্য আমরা একটি JmsTemplate ব্যবহার করব।

    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jms.core.JmsTemplate;
    import org.springframework.stereotype.Service;
    
    @Service
    public class MessageSender {
    
        @Autowired
        private JmsTemplate jmsTemplate;
    
        private String destination = "testQueue"; // Queue Name
    
        // Method to send message to ActiveMQ
        public void sendMessage(String message) {
            jmsTemplate.convertAndSend(destination, message);
            System.out.println("Sent message: " + message);
        }
    }
    

    এখানে:

    • JmsTemplate: Spring Boot এর মাধ্যমে অ্যাকটিভএমকিউে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
    • destination: মেসেজ প্রেরণের জন্য কিউয়ের নাম।
  3. REST Controller for Sending Messages:

    মেসেজ পাঠানোর জন্য একটি REST API তৈরি করতে পারেন:

    package com.example.demo;
    
    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 MessageSender messageSender;
    
        // Endpoint to send message
        @GetMapping("/send")
        public String sendMessage(@RequestParam String message) {
            messageSender.sendMessage(message);
            return "Message sent: " + message;
        }
    }
    

    এই কোডের মাধ্যমে, আপনি http://localhost:8080/send?message=HelloActiveMQ URL এ GET রিকোয়েস্ট পাঠিয়ে মেসেজ পাঠাতে পারবেন।


Spring Boot এর মাধ্যমে Message Listener (Consumer) তৈরি করা

এখন আমরা একটি Message Listener তৈরি করব যা কিউ থেকে মেসেজ গ্রহণ করবে।

  1. Message Listener কনফিগারেশন:

    Spring Boot এর মাধ্যমে @JmsListener ব্যবহার করে আপনি মেসেজ গ্রহণ করতে পারেন। প্রথমে, @EnableJms অ্যানোটেশনটি ব্যবহার করে JmsListener সক্রিয় করতে হবে।

    package com.example.demo;
    
    import org.springframework.jms.annotation.JmsListener;
    import org.springframework.stereotype.Service;
    
    @Service
    public class MessageListener {
    
        // Listening to the 'testQueue' for incoming messages
        @JmsListener(destination = "testQueue")
        public void receiveMessage(String message) {
            System.out.println("Received message: " + message);
        }
    }
    

    এখানে:

    • @JmsListener(destination = "testQueue"): এটি testQueue থেকে মেসেজ গ্রহণ করার জন্য কনজিউমার তৈরি করে। যখনই কিউতে একটি মেসেজ আসে, এই মেথডটি তা গ্রহণ করবে।
  2. JmsListenerContainerFactory কনফিগারেশন:

    স্প্রিং বুটের মাধ্যমে JMS কনজিউমার এবং কনফিগারেশন পরিচালনা করার জন্য JmsListenerContainerFactory কনফিগার করা হয়:

    package com.example.demo;
    
    import org.apache.activemq.ActiveMQConnectionFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jms.annotation.EnableJms;
    import org.springframework.jms.connection.JmsConnectionFactoryFactory;
    import org.springframework.jms.listener.DefaultMessageListenerContainer;
    import org.springframework.jms.listener.MessageListenerContainer;
    import org.springframework.jms.listener.config.DefaultJmsListenerContainerFactory;
    import org.springframework.jms.listener.config.JmsListenerContainerFactory;
    import org.springframework.jms.support.destination.DestinationResolver;
    import org.springframework.jms.support.converter.MessageConverter;
    
    @Configuration
    @EnableJms
    public class JmsConfig {
    
        @Bean
        public JmsListenerContainerFactory<?> myFactory(
                ActiveMQConnectionFactory connectionFactory, 
                MessageConverter messageConverter,
                DestinationResolver destinationResolver) {
            
            DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
            factory.setConnectionFactory(connectionFactory);
            factory.setMessageConverter(messageConverter);
            factory.setDestinationResolver(destinationResolver);
            return factory;
        }
    }
    

সারাংশ

অ্যাপাচি অ্যাকটিভএমকিউ এবং Spring Boot ব্যবহার করে Message Sender (Producer) এবং Message Listener (Consumer) তৈরি করা একটি সাধারণ এবং কার্যকরী উপায় মেসেজিং সিস্টেম তৈরির জন্য। Spring Boot এর মাধ্যমে:

  • Message Sender: JmsTemplate ব্যবহার করে মেসেজ পাঠানো হয়।
  • Message Listener: @JmsListener ব্যবহার করে মেসেজ গ্রহণ করা হয়।

এইভাবে, আপনি স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করে অ্যাপাচি অ্যাকটিভএমকিউ মেসেজ ব্রোকারের মাধ্যমে মেসেজ প্রেরণ এবং গ্রহণ সহজেই পরিচালনা করতে পারেন।

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

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

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

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