以下示例均基於springcloud的greenwich.sr1版本,且需要依賴到之前介紹springcloud相關的文章
>
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-openfeignartifactid
>
dependency
>
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-consul-discoveryartifactid
>
dependency
>
dependencies
>
因為這次使用consul作為服務治理,所以也需要引入consul的依賴。
這個模組主要是為了宣告一些服務的介面,讓provider和consumer去引入使用。
@feignclient
("feign-provider"
, fallbackfactory = helloservicefallbackfactory::
class
)inte***ce helloservice
首先我們使用@feignclient註解宣告乙個服務介面。
第乙個引數為提供實現的服務名稱。
第二個引數則是為了實現hystrix的熔斷功能。
這需要提供乙個實現了這個介面的類來提供fallback結果。
@component
class helloservicefallback : helloservice
}
留意到服務介面定義中,是使用了工廠模式,所以還需要乙個定義乙個工廠類。
使用時也可以不用工廠模式。
@component
class
helloservicefallbackfactory
(val helloservicefallback: helloservicefallback)
: fallbackfactory")
return helloservicefallback
}}
負責實現服務介面功能,先配置consul位址並開啟hystrix功能。
server
:port
:6613
spring::
name
: feign-provider
cloud
:consul
:host
: localhost
port
:8500
feign
:hystrix
:enabled
:true
@restcontroller
class helloserviceimpl : helloservice ")
var port: string?
=null
override
funhello
(name: string)
: string
}
接下來只要在啟動類中增加@enablefeignclients註解啟動就可以了。
@enablediscoveryclient
@enablefeignclients
class
feignproviderstarter
fun main
(args: array
)負責模擬服務呼叫,同樣先配置好應用資訊。
server:
port: 6614
spring:
name: feign-customer
cloud:
consul:
host: localhost
port: 8500
feign:
hystrix:
enabled: true
然後建立乙個controller去呼叫。
@restcontroller
class
democontroller
}
這裡有一點要注意,由於helloservice這個bean是啟動時注入的,編譯器無辦法知道導致了會報錯。@enablediscoveryclient這個錯誤可以忽略,不影響啟動和使用。
@enablefeignclients
class
feigncustomerstarter
fun main
(args: array
)啟動應用,訪問http://localhost:6614/hello?name=czb1n
,如果feign-provider服務狀態正常時,會顯示response from 6613: hello czb1n.
。否則會返回fallback function: hello czb1n.
springcloud學習 eureka服務提供者
上篇博文已經完成註冊中心基本功能,按照上篇博文方式建立新的module,用來配置服務提供者。1 在輸入module名稱時,輸入module名稱為eurekaclient。注意對應配置檔案與上篇的區別 對應的埠號為8010 對應registerwitheureka 表示是否將本應用註冊到eureka服...
springcloud搭建eureka服務
案例建立的工程名為 springcloue parent 02 修改pom檔案 pom org.springframework.cloud spring cloud dependencies greenwich.release pomimport 案例子工程名為 eureka com.yl spri...
springcloud之自定義簡易消費服務元件
本次和大家分享的是怎麼來消費服務,上篇文章講了使用feign來消費,本篇來使用rest ribbon消費服務,並且通過輪詢方式來自定義了個簡易消費元件,本文分享的宗旨是 自定義消費服務的思路 思路如果有可取之處還請 贊 一下 做為服務消費方準確的來說進行了兩種主流程區分1 獲取可以服務2 呼叫服務,...