Eureka server + WebFluxowe Functional Endpoints

1

Cześć, postanowiłem zagłębić się w świat mikroserwisów i zobaczyć jak to wszystko wygląda od środka.
Stworzyłem sobie config server, postawiłem eureke i zapiąłem jeden na razie discovery client.

Discovery client jest banalny i ma w sobie tylko to:

@Configuration
public class OrderResource {
    @Bean
    RouterFunction<ServerResponse> order (OrderRepository orderRepository) {
        return route()
                .GET("/orders", serverRequest -> ServerResponse.ok().body(orderRepository.findAll(), Order.class))
                .POST("/order", serverRequest -> ServerResponse.ok()
                                                               .body(
                                                                       serverRequest
                                                                               .bodyToMono(Order.class)
                                                                               .flatMap(orderRepository::save),
                                                                       Order.class
                                                               ))
                .build();
    }
}

oraz to

@SpringBootApplication
@EnableDiscoveryClient
public class ShopApplication {

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

    @RestController
    class ReservationRestController {
        @GetMapping("/sample")
        String reservations() {
            return "HAHA";
        }
    }

}

No i tak. Jeśli ta apka nie jest Discovery Clientem to endpointy /orders, /sample bezpośrednio odpowiadają. Jeśli dorzucę tam eurekę to odpowiada już tylko /sample, a /orders zwraca 404. No i muszę przyznać, że siedzę nad tym drugi dzień i nie mam pojęcia co może być nie tak?

1

Zobacz czy może tutaj ten link Ci coś pomoże:
https://stackoverflow.com/questions/59482401/trouble-using-eureka-to-register-a-microservice-with-webflux (a dokładniej dodanie adnotacji @LoandBalanced)

1

@Pinek: nie o to chodziło, ale dzięki za link, bo przy okazji zagłębiłem się w te Load Balancery ze Springa.

Chodziło o to, że mój client eureki tak naprawdę to... miał zależność w pom.xml: spring-cloud-starter-netflix-eureka-server, a nie spring-cloud-starter-netflix-eureka-client.. Prawie dwa dni walki, a nie wpadłem na to żeby spojrzeć do poma co ja tam na wymyślałem.. Jak zawsze największym problemem okazała się moja głupota :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1