server:
port: 9010 #服務端口號
spring:
application:
name: micro-sdn-gateway # 服務名稱
cloud:
gateway:
discovery:
locator:
enabled: true#是否適用默認路由(通過gatewayUri:port/服務名/path直接訪問服務接口)
lowerCaseServiceId: true#是否忽略服務名大小寫
routes:#gateway配置多條路由規則時注意順序問題,例如本例中路由謂詞爲Query的場景
#路由規則ID,上下文唯一
- id: micro-sdn-ptn #路由目標的服務名
uri: lb://MICRO-SDN-PTN #路由條件:請求中若包含ptn的路徑自動轉發至目標服務
predicates:
- Path=/**/ptn/** #訪問gateway的路由
filters:
#- StripPrefix=1 去掉Path中第一個節點
- name: Retry
args:
#重試次數
retries: 2
#觸發重試的HTTP狀態返回碼
#多個參數用-連接
statuses: BAD_GATEWAY
#參考同上,series與statuses二選一即可
series:
- SERVER_ERROR#表示5xx,以5開頭的各種狀態碼
exceptions:#有以下異常時觸發重試,此處注意timeout的時間與熔斷設置的時間
- java.util.concurrent.TimeoutException
- java.net.ConnectException
#根據url攜帶參數"?app-name=collect1"匹配路由目標
#例http://localhost:9010/test?app-name=collect1
- id: micro-sdn-collect1
uri: lb://MICRO-SDN-COLLECT1
predicates:
- Query=app-name,collect1#參數謂詞只有一個參數時,匹配url中的變量名app-name;兩個參數則同時匹配變量與值
- id: micro-sdn-collect
uri: lb://MICRO-SDN-COLLECT
predicates:
- Query=app-name,collect