SpringCloud-Eureka登録センターとサービスの提供と呼び出しを構築する

紙の上はとても浅くて、自分でやらなきゃいけないことは絶対にわかっています〜とても簡単そうに見えて、いろいろなピットが一人で〜みんな、ゆっくり話させてください〜

スプリングクラウドとは何なのかナンセンスな話はしません〜

 

ユーレカ 

Eureka(略語だと思ったのですが、単語であることがわかりました。次のように翻訳されました:見つけました、見つけました!0.0)は、サービスの登録と検出を提供するNetflixオープンソース製品です。サービスの完全な実装を提供します。レジストリとサービスの発見。また、springcloudシステムで最も重要なコアコンポーネントの1つです。

このことの一般的な理解は淘宝網のようなものです。あなたが売り手であろうと買い手であろうと、取引したいのであれば、私に口座を登録する必要があります。

1.最初に新しいMavenプロジェクトを作成します

2.pomファイルに関連するjarパッケージを導入します

上司のチュートリアルを学習した後、結果は上司のデモで直接報告され、スタートアッププログラムは常に次のプロンプトを表示します。

原因:java.lang.ClassNotFoundException:com.sun.jersey.api.core.DefaultResourceConfig

落ち込んでいる場合は、spring-cloud-starter-eureka-serverjarパッケージを確認してください

紹介したジャージジャーは1.19.1だったので、自分で調べてみたところ、1.19が使えることがわかったので、pomファイルで紹介しました。私の理解では、1.19.1は1.19バージョンよりも間違いなく高いです。 。どうしてうまくいかないのですか?

再起動するとエラーが消え、後でエラーが報告され、サーボパッケージの下に別のクラスが見つかりませんでした。mmp〜はバージョンの問題であり、サーボパッケージが導入されました。ok〜

最後に、次のpom構成ファイルが作成されます

コードをコピーする

1 <parent> 
 2 <groupId> org.springframework.boot </ groupId> 
 3 <artifactId> spring-boot-starter-parent </ artifactId> 
 4 <version> 1.5.8.RELEASE </ version> 
 5 </ parent> 
 6     
 7 <dependencies> 
 8 <dependency> 
 9 <groupId> org.springframework.cloud </ groupId> 
10 <artifactId> spring-cloud-starter </ artifactId> 
11 </ dependency> 
12 <dependency> 
13 <groupId> com。 sun.jersey </ groupId> 
14 <artifactId> jersey-bundle </ artifactId> 
15 <version> 1.19 </ version> 
16 </ dependency> 
17 
18 <依存関係>
19 <groupId> com.netflix.servo </ groupId> 
20 <artifactId >サーボコア</ artifactId> 
21 <version> 0.12.7 </ version> 
22 </ dependency> 
23 <dependency> 
24 <groupId> org。 springframework.cloud </ groupId> 
25 <artifactId> spring-cloud-starter-eureka-server </ artifactId> 
26 </ dependency> 
27 </ dependencies> 
28 <dependencyManagement> 
29 <dependencies> 
30 <dependency> 
31 <groupId> org.springframework.cloud </ groupId> 
32 <artifactId> spring-cloud-dependencies </ artifactId>
33 <version> Dalston.RC1 </ version> 
34 <type> pom </ type>
35 <scope> import </ scope> スコープ>インポート</スコープ> 
36 </依存関係> 
37 </依存関係>
38 </ dependencyManagement> 
39 <repositories> 
40 <repository> 
41 <id> spring-milestones </ id> 
42 <name> Spring Milestones </ name> 
43 <url> https:/ /repo.spring.io/milestone </ url> 
44 <snapshots> 
45 <enabled> false </ enabled> 
46 </ snapshots> 
47 </ repository> 
48 </ repository>

コードをコピーする

3.スタートアップコードを書く

コードをコピーする

1 @SpringBootApplication 
2 @EnableEurekaServer 
3 public class App { 
4 
5 public static void main(String [] args){ 
6 SpringApplication.run(App.class、args); 
7} 
8}

コードをコピーする

EnableEurekaServerアノテーションの追加に注意してください

4.構成ファイルを追加します

この構成ファイルを追加するには、application.propertiesとapplication.yamlの2つの形式があります。2つの形式の違いは比較しません。しかし、このファイルの場所については、しばらく戸惑い、ついに図のように場所を見つけようとしました。

 

 また、手紙のファイル名は0.0以上であることに注意する必要があります。手紙を書くことに注意を払わなかったという理由だけで、エラーも報告しました。

Application.properties形式の場合、ファイルの内容は次のとおりです。

1 spring.application.name = spring-cloud-eureka 
2 server.port = 8000 
3 eureka.client.register-with-eureka = false 
4 eureka.client.fetch-registry = false 
5 eureka.client.serviceUrl.defaultZone = http :// localhost:$ {server.port} / eureka /

3行目はデフォルトでtrueであることに注意してください。つまり、このfalseを追加しないと、彼は自分自身を自分自身に登録したいので、起動時にエラーが報告されます。4行目もデフォルトでtrueです。これは、サービスセンターに登録された情報を取得するかどうかを意味します。 

5.レジストリを開始します

ブラウザにlocalhost:8000と入力して、レジストリが正常に起動しているかどうかを確認します。次のスクリーンショットが表示され、問題がないことを示します。

 

登録センターでは、サービスプロバイダーとサービスコンシューマーを雇用します。

 

サービスプロバイダー

1.新しいMavenプロジェクトを作成します

2.pomファイルにレジストリサービスと同じjarパッケージを導入します。

3.application.propertiesを記述します

内容は以下の通りです。

1 spring.application.name = spring-cloud-producer 
2 server.port = 9000 
3 eureka.client.serviceUrl.defaultZone = http:// localhost:8000 / eureka /

1行目は独自のサービスに名前を付け、2行目は独自のアクセスポートを設定し、3行目は登録するレジストリを設定します。eurekaレジストリをローカル8000ポートに設定しているため、だから私たちはこのアドレスを書きます

4.スタートアップコードを書く

コードをコピーする

1 @SpringBootApplication 
2 @EnableDiscoveryClient 
3 public class App 
4 { 
5 public static void main(String [] args)
6 { 
7 SpringApplication.run(App.class、args); 
8} 
9}

コードをコピーする

EnableDiscoveryClientアノテーションの追加に注意してください

5.サービスコントローラーのクラスコードを記述します

コードをコピーする

1 @RestController 
2 public class HelloController { 
3      
4 @RequestMapping( "/ hello")
5 public String hello(@RequestParam String name){ 
6 return "hello" + name + "、はじめまして!"; 
7} 
8}

コードをコピーする

 ここでサービスプロバイダーが完了し、プログラムを開始します。エラーは報告されません。登録センターのページを更新すると、アプリケーションに現在登録されているサービスが表示されます。

 

サービスの発信者

1.新しいMavenプロジェクトを作成します

2.pomファイルにも以前と同じコンテンツを導入します。

3.application.propertiesを記述します

1 spring.application.name = spring-cloud-consumer 
2 server.port = 9001 
3 eureka.client.serviceUrl.defaultZone = http:// localhost:8000 / eureka /

1行目は現在のサービスにも名前を付け、2行目はポートを設定し、3行目はレジストリURLを設定します。

4.スタートアップコードを書く

コードをコピーする

1 @SpringBootApplication 
 2 @EnableDiscoveryClient 
 3 @EnableFeignClients 
 4 public class App 
 5 { 
 6 public static void main(String [] args)
 7 { 
 8 SpringApplication.run(App.class、args); 
 9} 
10}

コードをコピーする

このスタートアップクラスには、サービスプロバイダーよりも1つ多いEnableFeignClientsアノテーションがあることに注意してください。このアノテーションの機能は、リモート呼び出しに対してfeignを有効にすることです。

5.偽の呼び出しの実装を書く

1 @FeignClient(name = "spring-cloud-producer")
2 public interface HelloRemote { 
3 @RequestMapping(value = "/ hello")
4 public String hello(@RequestParam(value = "name")String name); 
5}

これはインターフェースであることに注意してください。上記の注釈パラメーター名は、現在呼び出しているサービスプロバイダーの名前を指定するためのものです。また、メソッドのパラメーター名がサービスプロバイダーのパラメーターと一致していることにも注意してください

6.サービス呼び出し元コントローラークラスを記述します

コードをコピーする

1 @RestController 
 2 public class ConsumerController { 
 3 
 4 @Autowired 
 5 HelloRemote HelloRemote; 
 6      
 7 @RequestMapping( "/ hello / {name}")
 8 public String hello(@PathVariable( "name")String name){ 
 9 return HelloRemote.hello(name); 
10} 
11 
12}

コードをコピーする

ローカルのhelloメソッドを呼び出してから、HelloRemoteインターフェイスのメソッドを呼び出すことにより、HelloRemoteインターフェイスを現在のクラスに導入します。

プログラムを起動すると、エラーは報告されません。

 

この時点でレジストリを更新すると、2つのサービスが登録されていることがわかります。

 

テスト検証

 ブラウザを開き、次のように入力します:http:// localhost:9001 / hello / JJ

上の図に示すように、結果は正常に返され、サービス呼び出しとプロバイダー全体に問題がないことを示しています。

おすすめ

転載: blog.csdn.net/suixinsuoyu12519/article/details/111692628