1:新しいプロジェクトを作成します。
次のステップは、になっています、
依存関係を追加porm.xml
<依存性>
<依存性>
<のgroupId> org.springframework.boot </のgroupId>
<たartifactId>ばねブートスタータアクチュエータ</たartifactId>
</依存>
<依存性>
<のgroupId> org.springframework.boot </のgroupId >
<たartifactId>春・ブート・スターター・ウェブ</たartifactId>
</依存関係>
<依存>
<groupIdを> org.springframework.cloud </ groupIdを>
<たartifactId>春・クラウド・スターター・領事-発見</たartifactId>
</依存関係>
<依存>
<groupIdを>組織。springframework.boot </ groupIdを>
<たartifactId>ばねブートスタータ試験</たartifactId>
<スコープ>テスト</スコープ>
</依存>
</依存関係>
<dependencyManagement>
<依存性>
<依存性>
<のgroupId> org.springframework.cloud </のgroupId>
<たartifactId>ばねクラウド依存性</たartifactId>
<バージョン> Finchley.SR2 </バージョン>
<タイプ> POM </ type>の
<スコープ> インポート </スコープ>
</依存>
</依存関係>
</ dependencyManagement>
私は2.0.5を使用していますspringbootのバージョンは、2.1.6は、無効の理由を使用することを知りません
<親> <groupIdを> org.springframework.boot </ groupIdを> <たartifactId>春・ブート・スターター・親</たartifactId> <バージョン> 2.0.5.RELEASE </バージョン> <relativePath /> <! -検索リポジトリから親- > </親>
2:クラスを開始@EnableDiscoveryClientコメントがサービス発見のための支持を表明追加
@SpringBootApplication @EnableDiscoveryClient パブリック クラスConsulDemo2Application { 公共 静的 ボイドメイン(文字列[]引数){ SpringApplication.run(ConsulDemo2Application。クラス、引数)。 } }
3:ありません。このアドレスはspring.cloud.consul.discovery.serviceNameがサービスの領事登録名を指し、それ自体を構成することができた場合application.properties(領事のアドレスとポート番号のデフォルトはlocalhostの8500を:.されるプロフィール、クライアントが遅くなりますこの名前のサービスコールに応じました。)
spring.application.name =バネクラウドconsul- プロデューサー はserver.port = 8501 spring.cloud.consul.host = localhostを spring.cloud.consul.port = 8500 #注册到領事的服务名称 spring.cloud.consul.discovery .serviceName =サービス、プロデューサー
4:新しいHelloControllerを作成し、ハローサービスを提供
@RestController パブリック クラスHelloController { @RequestMapping( "/ハロー" ) パブリック文字列のHello(){ リターン "こんにちは、領事" 。 } }
アイテムの上にレジスタのコピーをロードバランシングをシミュレートするために、ばねクラウド領事-producer2の名前を変更し、対応するポート8507を変更し、helloメソッドの戻り値を変更する:「ハロー領事2」、および完全な2を起動するように変更プロジェクト。
領事消費者側:スプリングクラウド領事コンシューマ
ばねクラウド領事、消費財、POMファイルと一貫性のある上記の例を作成します。
プロファイル(クライアントは領事を設定するために登録することができ、領事は私たちのビジネスに合わせてお選びし、レジストリに登録されない場合があり、サービスを利用しながら、サービス情報が外部インターフェイス領事を介して提供することができる得るのみ必要です。)
application.properties
春Cloud- = spring.application.name consul- 消費者 はserver.port = 8503 spring.cloud.consul.host = 127.0.0.1 spring.cloud.consul.port = 8500 #設定は、領事の登録する必要はありません spring.cloudを。 consul.discovery.register = 偽
開始クラスは必要ありません@EnableDiscoveryClient
@SpringBootApplication public class ConsulConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsulConsumerApplication.class, args); } }
测试,创建一个 ServiceController ,试试如果去获取 Consul 中的服务。
@RestController public class ServiceController { @Autowired private LoadBalancerClient loadBalancerClient; @Autowired private DiscoveryClient discoveryClient; /** * 获取所有的服务 * */ @RequestMapping("/services") public Object services(){ return discoveryClient.getInstances("service-producer"); } /** * 从所有服务中选择一个服务(轮询) */ @RequestMapping("/discover") public Object discover() { return loadBalancerClient.choose("service-producer").getUri().toString(); } }
运行services方法:
访问 http://localhost:8503/services
源码:https://gitee.com/Hiro-D/Java/tree/master/consul-demo
参考文章:https://blog.csdn.net/qq_26641781/article/details/82080659