.net framework 4.5 +steeltoe+ springcloud(二) 實現服務發現與呼叫功能
spring.application.name=java-service server.port=3222 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/修改pom.xml,加入架包引用:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
package com.ty.democlient; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableEurekaClient @RestController public class DemoclientApplication { public static void main(String[] args) { SpringApplication.run(DemoclientApplication.class, args); } @Value("${server.port}") String port; @RequestMapping("/hi") public String home(@RequestParam String name) { return "hi "+name+",i am from port:" +port; } }
{ "spring": { "application": { "name": "demo_netfetch" } }, "eureka": { "client": { "serviceUrl": "http://localhost:8761/eureka/", "shouldFetchRegistry": true, "shouldRegisterWithEureka": true, "validate_certificates": false }, "instance": { "port": 3001 // Remove comments to enable SSL requests // More changes in Program.cs are required if using direct C2C communications //,"securePortEnabled": true } }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "Pivotal": "Debug", "Steeltoe": "Debug" } } }
shouldFetchRegistry設定為true代表這是一個服務發現客戶端
然後在專案目錄下建立Service呼叫的類,配置具體呼叫的服務名,內容輸出方式等:
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; using System.Web; using Microsoft.Extensions.Logging; using Steeltoe.Common.Discovery; namespace DemoNetFetchClient.Services { public class FetchServise : IFetchServise { DiscoveryHttpClientHandler _handler; private const string RANDOM_FORTUNE_URL = "http://java-service/hi?name=tian";//服務中心已註冊的服務地址 private ILogger<FetchServise> _logger; public FetchServise(IDiscoveryClient client, ILoggerFactory logFactory = null) { _handler = new DiscoveryHttpClientHandler(client); _logger = logFactory?.CreateLogger<FetchServise>(); } public async Task<string> RandomFortuneAsync() { _logger?.LogInformation("RandomFortuneAsync"); var client = GetClient(); return await client.GetStringAsync(RANDOM_FORTUNE_URL); } private HttpClient GetClient() { var client = new HttpClient(_handler, false); return client; } } }注意這裡需要引用擴充套件包:Steeltoe.Common.Discovery,從NuGet里加載就可以,注意版本,要選擇NET專用的,而不是Core用的。 修改HomeController.cs,非同步請求呼叫內部服務:
public class HomeController : Controller { IFetchServise _fortunes; ILogger<HomeController> _logger; public HomeController(IFetchServise fortunes, ILoggerFactory logFactory = null) { _fortunes = fortunes; _logger = logFactory?.CreateLogger<HomeController>(); } public async System.Threading.Tasks.Task<ActionResult> Index() { ViewBag.Message = await _fortunes.RandomFortuneAsync(); return View(); } }修改Global.asax,註冊服務客戶端:
這裡要注意,如果專案是webapi程式,需要按Autofac整合webAPI的配置,具體請參考我的另一篇筆記:C# Autofac整合之Framework WebAPI
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); ApplicationConfig.RegisterConfig("development"); var builder = new ContainerBuilder(); // Add Microsoft Options to container builder.RegisterOptions(); // Add Microsoft Logging to container builder.RegisterLogging(ApplicationConfig.Configuration); // Add Console logger to container builder.RegisterConsoleLogging(); // Register all the controllers with Autofac builder.RegisterControllers(typeof(MvcApplication).Assembly); // Register IDiscoveryClient, etc. builder.RegisterDiscoveryClient(ApplicationConfig.Configuration); // Register FortuneService builder.RegisterType<FetchServise>().As<IFetchServise>().SingleInstance(); // Create the Autofac container var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); // Get a logger from container var logger = container.Resolve<ILogger<MvcApplication>>(); logger.LogInformation("Finished container build, starting background services"); // Start the Discovery client background thread container.StartDiscoveryClient(); logger.LogInformation("Finished starting background services"); }ok!done!程式跑起來效果,成功呼叫到服務中心內部服務java-service:
相關推薦
.net framework 4.5 +steeltoe+ springcloud(二) 實現服務發現與呼叫功能
首先,寫一個簡單的可被呼叫的服務註冊到服務中心,我們這命名為java-service,用的是IDEA建立一個spring boot專案,選擇spring client型別。 修改application.properties,配置服務中心地址和服務埠號: spring.application.n
.net framework 4.5 +steeltoe+ springcloud(一) 實現服務註冊功能
首先得先了解並熟悉一下springcloud,並手動去搭建一個服務中心,也可參照eurake官方示例。 如果是.net core的話,實現註冊也是沒有問題的,網上教程很多,可自行度娘。 最難的就是基於Framework的專案怎麼實現註冊,跟core的實現方式區別還是蠻大的
乾貨實操:微服務Spring Cloud 系列(二) Eureka服務發現與服務註冊(strand alone)
此篇主要實操Eureka 服務端的服務註冊,以及服務發現,並需要認證才能訪問控制中心。 分五個部分說明: 一. 認識 Eureka 二. Eureka 服務端開發 三. Eureka 客戶端開發 四. 多客戶端情況檢視 五. 下節預告(多個服務提供後,怎麼
4.4.5 通道均衡(二)
4.4.5 通道均衡(二) 基本上 《XILINX FPGA的OFDM通訊系統基帶設計》一書已經帶有各部分的程式碼,我做的工作就是將程式碼整合到一起,並按照模擬修改,讓其能正常工作。本文將對實現中的重點部分做解釋,並指出需要修改的地方。 一、長訓練符
SpringCloud(二):服務的註冊與發現(Eureka)
一、什麼是服務註冊與發現 Spring Cloud Eureka 模組提供的功能是被動式的服務發現。 服務註冊:每個使用者去聊天室伺服器上註冊。 服務發現:這樣他的好友們就能看到你,你同時也將獲取好友的上線列表. 微服務中,服務就相當於聊天室的使用者,而服務註冊中心就像
.Net Core微服務入門全紀錄(二)——Consul-服務註冊與發現(上)
# 前言 上一篇【[.Net Core微服務入門全紀錄(一)——專案搭建](https://www.cnblogs.com/xhznl/p/13071260.html)】講到要做到服務的靈活伸縮,那麼需要有一種機制來實現它,這個機制就是服務註冊與發現。當然這也並不是必要的,如果你的服務例項很少,並且很穩定,那
Spring Cloud(二):服務註冊與發現 Eureka【Finchley 版】
LEDE .com Go eureka clean 英文逗號 開始 效果 sam Spring Cloud(二):服務註冊與發現 Eureka【Finchley 版】 發表於 2018-04-15 | 更新於 2018-05-07 | 上一篇主要介紹了相關理論,這一
SpringCloud(三)Eureka服務註冊與發現《2》(actuator與Eureka自我保護)
1、actuator與註冊微服務資訊完善 1.1、主機名稱:服務名稱修改 1.當前問題:含有主機名或主機ip。 2.修改microservice-provider-dept-8001yml檔案: eureka: client:&nbs
Java—內部類(二)—實現閉包與回撥
前言: Java的閉包與回撥我也是第二次接觸這個概念,之前在自學Android的時候繪製View很多地方都用到了監聽器回撥,一直不是很明白,現在回頭鞏固Java的基礎總算的弄明白,儘量用我自己理解的語言來和大家分享,希望對不懂的朋友可以有一定的幫助,大神也可以
Java微服務(二):服務消費者與提供者搭建
本文接著上一篇寫的《Java微服務(一):dubbo-admin控制檯的使用》,上篇文章介紹了docker,zookeeper環境的安裝,並參考dubbo官網演示了dubbo-admin控制檯的使用。上篇文章已經搭建好zookeeper服務註冊中心,本片文章主要搭建服務消費者和服務提供者。按照微服務的原則
服務治理:Spring Cloud Eureka(三)之服務發現與消費
Ribbon是基於HTTP和TCP的客戶端負載均衡器,可以在通過客戶端配置的ribbonServerList服務端列表去輪詢訪問達到均衡負載的作用。當其與Ribbon聯合使用時,其ribbonServerList會被DiscoveryEnalbedNIWServerList重寫,擴充套件成從E
Microsoft .NET Framework 4.5.2 (Offline Installer)
com 2012 r2 install installer frame load ram .aspx exe Microsoft .NET Framework 4.5.2 (Offline Installer) for Windows Vista SP2, Windows
WPF 實現INotifyPropertyChanged .Net Framework 4.5
hang nta not void one using style call str 自己動手寫了一個基類來實現INotifyPropertyChanged接口,以後可以直接使用。 1 using System.ComponentModel; 2
MVC .net framework 4.5 發布 瀏覽時顯示目錄
mvc 發布 瀏覽 顯示目錄問題:在IIS發布的mvc網站,瀏覽時顯示為網站目錄。 剛開始沒有註意以為mvc程序是4.0 後發現配置文件中目標框架為4.5 <system.web> <compilation targetFramework="4.5" /> <ht
由.net framework 3.5切換.net framework 4.5遇到的問題
size color none width get inf font 進行 都是 背景 由於server 2012 r2安裝.net framework3.5需要安裝光盤。Scott提出需要把舊項目.net framework升級。不再需要安裝.net framework3
.NET Framework 4.5 的五大特性
http://www.itstrike.cn/Question/10777f22-b683-45ee-a957-c38368823a01.html 介紹 從.NET4.5釋出到現在已經有一年多了。但問題是針對最近微軟釋出的版本資訊中,大部分的.NET開發人員所討論交流的只是其中的一兩個特
Five Great .NET Framework 4.5 Features (五大特性) [譯].Net 4.5 的五項強大新特性
[譯].Net 4.5 的五項強大新特性 本文原文: Five Great .NET Framework 4.5 Features 譯者: 冰河魔法師 目錄 介紹 特性一:async和aw
解決win10安裝net framework 3.5失敗問題(附帶sxs檔案下載)
win10安裝net framework 3.5失敗原因無非程式功能開啟失敗,解決辦法如下: 一、從win10安裝包目錄中拷貝sxs檔案到E盤根目錄下。 (2)本文使用的sxs檔案的win10安裝包下載地址: 【64位簡體中文家庭/專業版】 檔名:cn_windo
安裝mysql時提示This application requires .NET framework 4.5.2的解決辦法
安裝mysql社群版的時候報這個錯:this application requires .NET Framework 4.5.2 解決方法:到這個地址https://www.microsoft.com/en-us/download/details.aspx?id=42642
WIN10 安裝 ReportBuilder3.msi 提示需要 .NET Framework 4.5
win+r鍵調出執行視窗輸入regedit開啟登錄檔,找到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client 右鍵 彈出選單中選 許可權 在彈出視窗中選中administrators,我們可以看到此管理員帳戶只有只讀許