Java Technologies Spring Cloud Bus দিয়ে Event Broadcasting করা গাইড ও নোট

290

Spring Cloud Bus কি?

Spring Cloud Bus হলো একটি স্ট্রিমিং সিস্টেম যা মাইক্রোসার্ভিস অ্যাপ্লিকেশনে ইভেন্ট ব্রডকাস্টিং এবং কনফিগারেশন ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এটি বিভিন্ন সার্ভিসের মধ্যে বার্তা বা ইভেন্ট শেয়ার করার জন্য ব্যবহৃত হয়, যাতে একটি সার্ভিসের স্টেট পরিবর্তন বা কোনো গুরুত্বপূর্ণ ইভেন্ট অন্যান্য সার্ভিসে দ্রুত পৌঁছাতে পারে।

Spring Cloud Bus সাধারণত অ্যাপ্লিকেশন কনফিগারেশন রিফ্রেশ, সার্ভিসের মধ্যে ইভেন্ট সিঙ্ক্রোনাইজেশন বা বার্তা পাসিং এর জন্য ব্যবহৃত হয়। এটি RabbitMQ, Kafka বা অন্যান্য মেসেজ ব্রোকার ব্যবহার করে ডিস্ট্রিবিউটেড সিস্টেমে ইভেন্ট ব্রডকাস্ট করে।

Spring Cloud Bus এর ব্যবহার

Spring Cloud Bus এর সাহায্যে আপনি বিভিন্ন মাইক্রোসার্ভিসের মধ্যে কনফিগারেশন পরিবর্তন বা ইভেন্ট ব্রডকাস্ট করতে পারেন। উদাহরণস্বরূপ, আপনি যদি কোনো সার্ভিসে কনফিগারেশন পরিবর্তন করেন, তবে অন্য সার্ভিসগুলোতে সেই পরিবর্তনটি অটোমেটিক্যালি রিফ্রেশ হয়ে যাবে। এটি খুবই উপকারী যখন অনেক সার্ভিসের মধ্যে কনফিগারেশন সিঙ্ক্রোনাইজেশন প্রয়োজন।

Spring Cloud Bus সাধারণত Spring Cloud Config এবং Spring Cloud Stream এর সাথে ইন্টিগ্রেটেড হয়ে কাজ করে। এই ইন্টিগ্রেশনটি একটি সার্ভিসে কনফিগারেশন পরিবর্তন হলে তা অটোমেটিক্যালি সমস্ত ক্লায়েন্ট সার্ভিসে পুশ হয়ে যাবে।


Spring Cloud Bus দিয়ে Event Broadcasting কনফিগারেশন

Spring Cloud Bus দিয়ে ইভেন্ট ব্রডকাস্টিং কনফিগার করতে কয়েকটি প্রধান পদক্ষেপ রয়েছে। নিচে এই কনফিগারেশনটি কিভাবে করবেন তা দেখানো হল।

১. Maven Dependency যুক্ত করা

প্রথমে আপনাকে Spring Cloud Bus, Spring Cloud Stream এবং একটি মেসেজ ব্রোকার (যেমন RabbitMQ বা Kafka) এর জন্য ডিপেনডেন্সি যোগ করতে হবে।

Spring Cloud Bus, Spring Cloud Stream এবং RabbitMQ ডিপেনডেন্সি

<dependencies>
    <!-- Spring Cloud Bus -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>

    <!-- Spring Cloud Stream for Messaging -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
    </dependency>

    <!-- Spring Boot Starter Web (if not already included) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- RabbitMQ -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
</dependencies>

এখানে spring-cloud-starter-bus-amqp ডিপেনডেন্সি RabbitMQ এর মাধ্যমে মেসেজ ব্রডকাস্টিং সিস্টেম তৈরি করবে এবং spring-cloud-starter-stream-rabbit Spring Cloud Stream কে RabbitMQ এর সাথে ইন্টিগ্রেট করবে।

২. application.properties বা application.yml কনফিগারেশন

এখন application.properties বা application.yml ফাইলে RabbitMQ এর জন্য কনফিগারেশন সেট করতে হবে।

application.properties:

# RabbitMQ কনফিগারেশন
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

# Spring Cloud Bus
spring.cloud.bus.enabled=true

application.yml:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

  cloud:
    bus:
      enabled: true

এখানে, RabbitMQ সার্ভারটি localhost এ চলছে এবং spring.cloud.bus.enabled=true কনফিগারেশন Spring Cloud Bus সক্রিয় করে।

৩. Event Broadcasting (Producer) কনফিগারেশন

একটি সার্ভিস থেকে ইভেন্ট ব্রডকাস্ট করতে হলে, Spring Cloud Bus এর মাধ্যমে একটি @StreamListener বা @SendTo অ্যনোটেশন ব্যবহার করে ইভেন্ট পাবলিশ করতে হবে।

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
@EnableBinding(Source.class)  // Source ইনটারফেসে ডিফাইন করা চ্যানেল ব্যবহার করা হবে
public class EventPublisher {

    @Autowired
    private Source source;

    public void publishEvent(String message) {
        source.output().send(MessageBuilder.withPayload(message).build());
    }
}

এখানে, Source চ্যানেল ব্যবহার করে একটি মেসেজ RabbitMQ বা অন্য মেসেজ ব্রোকারে পাঠানো হচ্ছে।

৪. Event Listener (Consumer) কনফিগারেশন

Spring Cloud Bus এ ইভেন্ট শুনতে, আপনি @StreamListener অথবা @EnableBinding ব্যবহার করতে পারেন। একটি কনজিউমার (Consumer) তৈরি করে আপনার অ্যাপ্লিকেশনে ইভেন্ট শোনার জন্য নিচের কোডটি ব্যবহার করুন।

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.stereotype.Service;

@Service
@EnableBinding(org.springframework.cloud.stream.messaging.Sink.class)
public class EventListener {

    @StreamListener("input")
    public void handleMessage(String message) {
        System.out.println("Received event: " + message);
    }
}

এখানে, @StreamListener দিয়ে আপনি RabbitMQ বা অন্য মেসেজ ব্রোকার থেকে ইভেন্ট শুনছেন এবং প্রাপ্ত মেসেজটি কনসোল আউটপুট হিসেবে দেখাচ্ছেন।

৫. Event Trigger (Sending Event)

Event publisher থেকে ইভেন্ট পাঠাতে, আপনি EventPublisher ক্লাসের publishEvent() মেথডটি কল করতে পারেন।

@Autowired
private EventPublisher eventPublisher;

public void triggerEvent() {
    eventPublisher.publishEvent("Hello from Spring Cloud Bus");
}

এটি RabbitMQ বা অন্য মেসেজ ব্রোকারের মাধ্যমে ইভেন্ট পাঠাবে এবং EventListener ক্লাসটি সেই ইভেন্ট গ্রহণ করবে।


৬. RabbitMQ বা মেসেজ ব্রোকার চালু করা

Spring Cloud Bus এর মাধ্যমে ইভেন্ট শেয়ার করার জন্য আপনাকে RabbitMQ সার্ভার চালু রাখতে হবে। আপনি যদি RabbitMQ Docker ব্যবহার করতে চান, তবে নিচের কমান্ডটি ব্যবহার করতে পারেন:

docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:management

এটি RabbitMQ সার্ভার চালু করবে এবং আপনি http://localhost:15672 পোর্টে RabbitMQ এর ম্যানেজমেন্ট কনসোল দেখতে পারবেন।


সারাংশ

Spring Cloud Bus একটি শক্তিশালী টুল যা মাইক্রোসার্ভিস আর্কিটেকচারে ইভেন্ট ব্রডকাস্টিং এবং কনফিগারেশন ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এটি RabbitMQ বা Kafka এর মতো মেসেজ ব্রোকারের মাধ্যমে সার্ভিসের মধ্যে ইভেন্ট বা বার্তা শেয়ার করতে সাহায্য করে। Spring Cloud Bus এর মাধ্যমে আপনি সহজেই সার্ভিসে কনফিগারেশন পরিবর্তন বা অন্যান্য ইভেন্ট ব্রডকাস্ট করতে পারেন, যা অন্যান্য সার্ভিসে অটোমেটিক্যালি রিফ্রেশ বা প্রক্রিয়া করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...