Java Technologies Apache Kafka এবং RabbitMQ এর সাথে Spring Cloud Stream Integration গাইড ও নোট

310

Spring Cloud Stream হল একটি ইভেন্ট-ড্রিভেন এবং মেসেজ-ভিত্তিক অ্যাপ্লিকেশন তৈরি করার জন্য একটি ফ্রেমওয়ার্ক, যা Apache Kafka, RabbitMQ বা অন্যান্য মেসেজিং সিস্টেমের সাথে সহজে ইন্টিগ্রেট হতে পারে। Spring Cloud Stream এই মেসেজিং সিস্টেমগুলোকে ব্যবহার করে মাইক্রোসার্ভিসগুলোর মধ্যে অ্যাসিনক্রোনাস মেসেজ আদান-প্রদান সহজ করে তোলে।

নিচে Apache Kafka এবং RabbitMQ এর সাথে Spring Cloud Stream কিভাবে ইন্টিগ্রেট করা যায়, তা ব্যাখ্যা করা হয়েছে।


Spring Cloud Stream with Apache Kafka Integration

Apache Kafka হল একটি ওপেন সোর্স মেসেজ ব্রোকার, যা স্ট্রিমিং ডেটা এবং লগিং সিস্টেমের জন্য ব্যবহৃত হয়। Spring Cloud Stream Kafka এর সাথে সহজে কাজ করতে সাহায্য করে।

১. Maven ডিপেনডেন্সি

Spring Cloud Stream এবং Kafka এর সাথে ইন্টিগ্রেশন করতে আপনাকে নিচের ডিপেনডেন্সি আপনার pom.xml ফাইলে যোগ করতে হবে:

<dependencies>
    <!-- Spring Cloud Stream Dependency -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-stream-kafka</artifactId>
    </dependency>
    
    <!-- Spring Boot Starter Web (if needed) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Spring Boot Starter Messaging -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-integration</artifactId>
    </dependency>
</dependencies>

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

Kafka এর সাথে Spring Cloud Stream কাজ করতে কিছু কনফিগারেশন সেটআপ করতে হবে। আপনার application.yml ফাইলে Kafka এর সাথে ইন্টিগ্রেশন কনফিগার করুন।

spring:
  cloud:
    stream:
      bindings:
        input:
          destination: my_topic
          group: my-group
          content-type: application/json
        output:
          destination: my_topic
          content-type: application/json
      kafka:
        binder:
          brokers: localhost:9092  # Kafka broker URL
  • input এবং output হলো Stream এর ইনপুট এবং আউটপুট চ্যানেল।
  • my_topic হল Kafka টপিকের নাম যেখানে মেসেজ পাঠানো হবে এবং গ্রহণ করা হবে।

৩. Stream Listener এবং Source তৈরি করা

Spring Cloud Stream-এর মাধ্যমে আপনি একটি Source (message producer) এবং Sink (message consumer) তৈরি করতে পারেন। এখানে @StreamListener ব্যবহার করে মেসেজ পাঠানো এবং গ্রহণ করা হয়েছে।

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Sink;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Service;

@EnableBinding({Source.class, Sink.class})
@Service
public class KafkaStreamService {

    // Message Producer
    @StreamListener(Source.OUTPUT)
    @SendTo(Source.OUTPUT)  // Sending back the message
    public String processMessage(String message) {
        System.out.println("Received message: " + message);
        return "Processed: " + message;
    }

    // Message Consumer
    @StreamListener(Sink.INPUT)
    public void consumeMessage(String message) {
        System.out.println("Consumed message: " + message);
    }
}

এই উদাহরণে, @StreamListener ব্যবহার করে আপনি Kafka টপিক থেকে মেসেজ গ্রহণ এবং পাঠাতে পারবেন।

৪. Kafka Topic Consumer & Producer তৈরি

  • Producer (Message Sender): মেসেজ প্রেরণের জন্য Source ব্যবহার করা হবে।
  • Consumer (Message Receiver): মেসেজ গ্রহণের জন্য Sink ব্যবহার করা হবে।

৫. Kafka Producer (Message Sender)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.messaging.MessageChannel;
import org.springframework.stereotype.Service;

@Service
public class KafkaProducerService {

    @Autowired
    private MessageChannel output;  // output is the channel to send messages to Kafka

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

৬. Kafka Consumer (Message Receiver)

import org.springframework.cloud.stream.messaging.Sink;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.stereotype.Service;

@Service
public class KafkaConsumerService {

    @StreamListener(Sink.INPUT)
    public void consume(String message) {
        System.out.println("Consumed message: " + message);
    }
}

Spring Cloud Stream with RabbitMQ Integration

RabbitMQ একটি জনপ্রিয় মেসেজ ব্রোকার, যা জটিল মেসেজিং সিস্টেমের জন্য ব্যবহৃত হয়। Spring Cloud Stream RabbitMQ এর সাথে সহজে ইন্টিগ্রেট করা যায়।

১. Maven ডিপেনডেন্সি

RabbitMQ-এর সাথে Spring Cloud Stream ইন্টিগ্রেশন করতে নিচের ডিপেনডেন্সি আপনার pom.xml ফাইলে যোগ করতে হবে:

<dependencies>
    <!-- Spring Cloud Stream RabbitMQ Dependency -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
    </dependency>
    
    <!-- Spring Boot Starter Web (if needed) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

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

RabbitMQ-এর সাথে Spring Cloud Stream ইন্টিগ্রেশন করতে নিচের কনফিগারেশন ফাইলটি যোগ করুন:

spring:
  cloud:
    stream:
      bindings:
        input:
          destination: my_queue
          group: my-group
          content-type: application/json
        output:
          destination: my_queue
          content-type: application/json
      rabbit:
        binder:
          brokers: localhost:5672  # RabbitMQ broker URL

এখানে, input এবং output RabbitMQ-এর সাথে যোগাযোগের জন্য কনফিগার করা হয়েছে। my_queue RabbitMQ-তে একটি কিউ থাকবে যেখানে মেসেজ পাঠানো এবং গ্রহণ করা হবে।

৩. Stream Listener এবং Source তৈরি করা

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Sink;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Service;

@EnableBinding({Source.class, Sink.class})
@Service
public class RabbitStreamService {

    // Message Producer
    @StreamListener(Source.OUTPUT)
    @SendTo(Source.OUTPUT)  // Sending back the message
    public String processMessage(String message) {
        System.out.println("Received message: " + message);
        return "Processed: " + message;
    }

    // Message Consumer
    @StreamListener(Sink.INPUT)
    public void consumeMessage(String message) {
        System.out.println("Consumed message: " + message);
    }
}

Spring Cloud Stream Integration with Kafka এবং RabbitMQ-এর উপসংহার

  • Spring Cloud Stream সহজেই Kafka এবং RabbitMQ এর সাথে ইন্টিগ্রেট করা যায়।
  • আপনি Spring Cloud Stream ব্যবহার করে মেসেজ প্রযোজক (Producer) এবং মেসেজ গ্রহণকারী (Consumer) তৈরি করতে পারেন।
  • Apache Kafka বা RabbitMQ ব্যবহারের মাধ্যমে আপনি মাইক্রোসার্ভিস আর্কিটেকচারে অ্যাসিনক্রোনাস কমিউনিকেশন করতে পারবেন, যা পারফরম্যান্স বৃদ্ধি এবং সিস্টেমের স্কেলেবিলিটি নিশ্চিত করে।

এই ইন্টিগ্রেশন আপনাকে মাইক্রোসার্ভিস অ্যাপ্লিকেশনে ইভেন্ট-ড্রিভেন আর্কিটেকচার এবং মেসেজিং সিস্টেমের ব্যবহার সহজ করবে।

Content added By
Promotion

Are you sure to start over?

Loading...