簡體   English   中英

使用Spring Boot訪問微服務

[英]Access microservice using Spring Boot

我必須將我的項目實施為微服務架構。 為此,我正在使用Spring Boot做一個示例應用程序,添加兩個no。 我有三項服務。 這是我的registration-server.yml。類似地,我有account-server.ymluser-service.yml 我想使用不帶RMI概念的UserService.java調用add() ,因為我使用的是Spring Boot。 另外,我不希望進行REST調用,因為這對我的項目而言會很昂貴。 如何在UserService手動為lookup()寫代碼,以便它可以調用Adder?

@EnableAutoConfiguration
@EnableDiscoveryClient
public class AddService {

public static int add(int x,int y){
    int z=x+y;
    System.out.println("The sum of no. is "+z);
    return z;
}

public static void main(String[] args) {
    System.setProperty("spring.config.name", "add-service");
    SpringApplication.run(AddService.class, args);
}

@SpringBootApplication
@EnableEurekaServer
public class RegistrationService {

public static void main(String[] args) {
    // Tell server to look for registration.properties or registration.yml
    System.setProperty("spring.config.name", "registration-service");

    SpringApplication.run(RegistrationService.class, args);
}


@SpringBootApplication
@EnableDiscoveryClient
public class UserService {
public static void main(String[] args) {

    System.setProperty("spring.config.name", "registration-service");

    SpringApplication.run(UserService.class, args);
}




    eureka:
   instance:
    hostname: localhost
    client:  # Not a client, don't register with yourself
    registerWithEureka: false
    fetchRegistry: false

  server:
  port: 1111   # HTTP (Tomcat) port

我想說的是Spring Cloud指南是最好的起點。

簡而言之,由於您使用的是Spring Cloud(即@EnableDiscoveryClient ),因此我將親自使用Spring Cloud的偽裝客戶支持來執行此呼叫。 這將為您執行實際的發現服務(eureka)查找和HTTP調用。

首先,您需要在配置類上使用@EnableFeignClients批注,並需要以下依賴項(假設Maven):

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

然后,在用戶服務項目中,您可以添加以下界面:

@FeignClient("add-service")
public interface AddServiceClient {

    @RequestMapping(method = RequestMethod.POST, value = "/add/{x}/{y}", consumes="application/json")
    int addNumbers(@PathVariable("x") int x, @PathVariable("y") int y);

}

基本上就是這樣。 然后,您可以自動連接AddServiceClient並使用它:

@Autowired
private AddServiceClient addServiceClient;

void someMethod() {
    addServiceClient.addNumbers(2, 4);
}

假設您將/ add / {x} / {y}作為添加服務中的POST端點@RestController (例如,通過@RestController@RequestMapping

編輯:對不起,我剛剛看到您說REST的成本很高。 為什么你這么想? :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM