學習SpringCloud之服務呼叫Feign

2021-09-17 22:03:48 字數 2791 閱讀 8321

以下示例均基於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 呼叫服務,...