Configuring and Using Eureka Discovery
Published: 2023-09-24 08:51:18

Configuring and using Eureka Discovery Server in Spring Cloud is a fundamental step in building microservices-based applications. Below is a guide on how to set up and utilize Eureka in your spring boot application.

**Step 1: Set Up a Spring Boot Project**
Start by creating a Spring Boot project using your preferred IDE or Spring Initializer (https://start.spring.io/). Make sure to include the "Eureka Server" and "Eureka Discovery" dependencies.


**Step 2: Configure Eureka Server**
In your Spring Boot application, you need to configure it as a Eureka Server. Create a main class and annotate it with `@EnableEurekaServer`:
```java
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);
    }
}
```

In your `application.properties` or `application.yml`, specify the server port and any other configurations:

```yaml
server.port=8761
spring.application.name=eureka-server
```

**Step 3: Configure Eureka Client(s)**
Now, you'll create one or more Eureka clients, which are your microservices that register with the Eureka Server. In your microservice project(s), add the Eureka Client dependency.

```xml
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
```

In your microservice's `application.properties` or `application.yml`, specify the Eureka Server's location:

```yaml
eureka.client.service-url.default-zone=http://localhost:8761/eureka
```

**Step 4: Register Microservices**
In each of your microservices, annotate the main class with `@EnableDiscoveryClient`:

```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class YourMicroserviceApplication {

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

**Step 5: Test Eureka**
- Start your Eureka Server application.
- Start your microservices (Eureka Clients).
- Access the Eureka Server's dashboard in your browser: `http://localhost:8761`.

You should see your registered microservices listed in the dashboard.

**Step 6: Load Balancing**
Eureka also provides client-side load balancing. You can use the `@LoadBalanced` annotation with your `RestTemplate` or `WebClient` to make requests to other services registered with Eureka. For example:

```java
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
```

**Example Use Case:**
Suppose you have a "ProductService" and a "UserService" as microservices. You can use the `@LoadBalanced` `RestTemplate` to make requests from the "UserService" to the "ProductService" without hardcoding the URL.

That's a basic guide on how to configure and use Eureka Discovery Server in Spring Cloud. You can extend this architecture to build complex microservices ecosystems with ease.