Spring Cloud এর মাধ্যমে একটি প্রাথমিক প্রজেক্ট তৈরি করা বেশ সহজ এবং এটি মাইক্রোসার্ভিস আর্কিটেকচারের জন্য একটি ভাল পয়েন্ট শুরু। এখানে একটি সহজ Hello Spring Cloud Example তৈরি করার পদ্ধতি আলোচনা করা হবে যেখানে আমরা একটি Spring Cloud Config Server, একটি Client Service এবং Eureka Server তৈরি করব।
এই উদাহরণটি শুরুতে একটি Spring Cloud Config Server তৈরি করবে, যা সেন্ট্রাল কনফিগারেশন ম্যানেজমেন্ট সরবরাহ করবে এবং Eureka সার্ভিস ডিসকভারি সিস্টেম ব্যবহার করবে, যা সার্ভিসগুলিকে রেজিস্টার এবং ডিসকভার করতে সাহায্য করবে।
১. Spring Cloud Config Server তৈরি করা
Config Server একটি সেন্ট্রাল কনফিগারেশন সার্ভিস যা মাইক্রোসার্ভিসগুলোকে সেন্ট্রাল কনফিগারেশন প্রদান করে। এখানে আমরা Spring Cloud Config Server তৈরি করব।
১.১. Maven Dependency যোগ করুন
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
১.২. @EnableConfigServer এনোটেশন যোগ করুন
Config Server ক্লাসে @EnableConfigServer ব্যবহার করে Config Server সক্রিয় করুন।
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
১.৩. application.yml কনফিগারেশন
Config Server এর কনফিগারেশন ফাইলটি এভাবে তৈরি করুন:
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/your-username/config-repo # এখানে আপনার Git repository URL দিন
এখানে আমরা Git repository ব্যবহার করে কনফিগারেশন ফাইল সংগ্রহ করব।
২. Eureka Server তৈরি করা
Eureka Server হল একটি Service Discovery সার্ভিস যা সমস্ত মাইক্রোসার্ভিসকে রেজিস্টার করতে সহায়ক।
২.১. Maven Dependency যোগ করুন
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
২.২. @EnableEurekaServer এনোটেশন যোগ করুন
Eureka Server ক্লাসে @EnableEurekaServer এনোটেশন যোগ করুন:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
২.৩. application.yml কনফিগারেশন
Eureka Server-এর কনফিগারেশন ফাইল:
server:
port: 8761
eureka:
client:
registerWithEureka: false
fetchRegistry: false
server:
enableSelfPreservation: false
এখানে 8761 পোর্টে Eureka Server চলবে এবং এটি self-preservation মোড বন্ধ করবে, যাতে সার্ভিসটি সঠিকভাবে কাজ করতে পারে।
৩. Client Service তৈরি করা
এটি একটি সাধারণ Spring Boot অ্যাপ্লিকেশন হবে, যা Eureka Server-এ রেজিস্টার করবে এবং Config Server থেকে কনফিগারেশন পাবে।
৩.১. Maven Dependency যোগ করুন
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
৩.২. @EnableEurekaClient এনোটেশন যোগ করুন
Client Service ক্লাসে @EnableEurekaClient এনোটেশন যোগ করুন:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ClientServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ClientServiceApplication.class, args);
}
}
৩.৩. application.yml কনফিগারেশন
Client Service এর কনফিগারেশন ফাইল:
spring:
application:
name: client-service
cloud:
config:
uri: http://localhost:8888
discovery:
enabled: true
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
এখানে, Config Server থেকে কনফিগারেশন ফাইল এবং Eureka Server থেকে সার্ভিস ডিসকভারি কনফিগার করা হয়েছে।
৩.৪. Sample Controller
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ClientController {
@GetMapping("/hello")
public String hello() {
return "Hello from Client Service!";
}
}
৪. Application Properties (Git Repository for Config Server)
যেহেতু আমরা Git রিপোজিটরি ব্যবহার করেছি Config Server এর কনফিগারেশন জন্য, Config Server দ্বারা ব্যবহৃত কনফিগারেশন ফাইলগুলি Git repository তে থাকতে হবে। সেগুলির একটি উদাহরণ হতে পারে:
# application.properties or application.yml
message=Hello from Config Server!
৫. Spring Cloud প্রজেক্ট চালানো
প্রথমে Eureka Server চালু করুন:
mvn spring-boot:run -Dspring-boot.run.profiles=eurekaএটি আপনার
http://localhost:8761URL-এ Eureka Dashboard উপলব্ধ করবে।তারপর Config Server চালু করুন:
mvn spring-boot:run -Dspring-boot.run.profiles=config-serverএটি আপনার
http://localhost:8888URL-এ কনফিগারেশন সার্ভার উপলব্ধ করবে।তারপর Client Service চালু করুন:
mvn spring-boot:run -Dspring-boot.run.profiles=client-serviceClient Service সার্ভিসটি
http://localhost:8080/helloএ উপলব্ধ হবে এবং Hello from Client Service! বার্তা রিটার্ন করবে।
Conclusion
এভাবে আপনি একটি Spring Cloud প্রজেক্ট তৈরি করতে পারেন যেখানে:
- Config Server মাইক্রোসার্ভিসগুলোর কনফিগারেশন সেন্ট্রালভাবে পরিচালনা করবে।
- Eureka Server সার্ভিস ডিসকভারি প্রদান করবে।
- Client Service Config Server থেকে কনফিগারেশন পাবার জন্য কানেক্ট হবে এবং Eureka Server-এ রেজিস্টার হবে।
এই প্রজেক্টে Spring Cloud এর মূল উপাদানগুলি ব্যবহার করা হয়েছে এবং এটি একটি সাধারণ Hello Spring Cloud Example হিসেবে কাজ করবে।
Read more