以下に基づいて、紙のメモ
次のように最終的なプロジェクトが構成されています。
1、ユーレカを開始
まず、私たちは、クラウドと呼ばれる空のMavenプロジェクトを作成し、サブプロジェクトのeurekaserverクラウドであるとeurekaserver開始モジュールとして新しいプロジェクト内で、eurekaserver構成上のノートが既に持っている、理解していない、見ることができますこれはもはや表示されていません。
pooviderを作成します。2.
そして、Mavenのこのプロジェクトのプロジェクトと呼ばれるクラウド・プロバイダーを作成するために進んで、サービスの提供者、ユーレカディスカバリークライアントを追加するために注意を払うと春のWeb依存は以下のとおりです。
プロジェクトが正常に作成された後、中application.propertiesで次の設定を追加します:
spring.application.name=Provider
server.port=8090
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/
- spring.application.nameはこの名前でサービスを見つけることです他のサービスがこのサービスを呼び出すために必要がある場合、名前はユーレカに保存されたマーカーとなる、現在のサービス名を表します。
- 現在のポートのサービスをはserver.port。
- 最後のアドレスはあなたにも、クラスタ内のノードを1つだけ作成することができ、クラスタサービスレジストリ、場合、ユーレカクラスタサービスが自動的に同期することをここにノートに登録されたサービスセンターの住所への登録が必要な現在のサービスを示します。
現在のプロジェクトのクラスパスの存在限り、spring-cloud-starter-netflix-eureka-client
依存関係とは、アドレスユーレカレジストリを提供し、サービスが自動的にユーレカサーバーにログインします。これは、以前のバージョンでは、必要とされている@EnableEurekaClientノートを追加する必要はありません。
次に、プロジェクトを追加/次のように他のサービスコールコード用のsayHelloインターフェースです。
@RestController
class TestController {
@RequestMapping("/sayHello")
public String sayHello(String name){
return "hello"+name;
}
}
消費者の作成3.
そして、サブプロジェクトの消費者の消費量は、サービス、消費者の創造の責任であるクラウドプロジェクトに追加していくと一貫性のあるプロバイダを作成することは詳細には触れませんが、ちょうど次の設定ファイルを変更する/のsayHelloと同じを追加する必要はありません。
spring.application.name=Consumer
server.port=8091
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/
接下来在consumer的启动类中添加一个RestTemplate 的实例,RestTemplate 是用来进行http请求的。
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
@Bean
RestTemplate restTemplate(){
return new RestTemplate();
}
}
接下来创建一个TestController类,在里面写写一个/sayHello接口,用于掉用服务提供者的/sayHello接口并放回信息。
@RestController
public class TestController {
@Autowired
DiscoveryClient discoveryClient;
@Autowired
RestTemplate restTemplate;
@RequestMapping("/sayHello")
public String sayHello(String name){
List<ServiceInstance> list = discoveryClient.getInstances("provider");
ServiceInstance instances = list.get(0);
String host = instances.getHost();
int port = instances.getPort();
String result = restTemplate.getForObject("http://"+host+":"+port+"/sayHello?name={1}",String.class,name);
return result;
}
}
启动eurekaserver,provider,cosumer之后我们在浏览器中输入http://localhost:8091/sayHello?name=张某某
访问刚才的sayHello接口去调用服务提供者的sayHello接口并返回结果。
看得出这种调用方式有点麻烦,下一章将记录,声明式服务调用feign,将更加简洁。