採坑過程:
根據官方的文檔:
引用了官網的插件,然後具體的配置也是根據官網的文檔,如下:
#############consul##################
spring.cloud.consul.host=10.251.76.103
spring.cloud.consul.port=8500
spring.cloud.consul.enabled=true
spring.cloud.consul.discovery.healthCheckPath=${management.context-path}/health
spring.cloud.consul.discovery.healthCheckInterval=15s
spring.cloud.consul.discovery.instanceId=${cas.server.name}-${server.port}-${spring.cloud.client.hostname}
spring.cloud.consul.discovery.heartbeat.enabled=true
spring.cloud.consul.discovery.heartbeat.ttlValue=60
spring.cloud.consul.discovery.heartbeat.ttlUnit=s
那麼問題來了:
1、文檔上面紅色畫下劃線的,是寫錯了,要替換爲:
spring.cloud.consul.discovery.healthCheckInterval
2、重點問題來了,上面的配置應該放哪個文件呢?
根據cas默認提供的配置文件只有application.properties,所以默認我就放到了裏面,系統啓動的時候開始報錯了:
org.apache.http.conn.HttpHostConnectException: Connect to localhost:8500 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)
(注意:我的consul是在遠程服務器,非本地的)。
也就是說我在application.properties一直沒有生效,折騰了一天。
官網文檔至今沒有把這塊寫清楚(個人感覺,有錯請指出)。
然後我從頭閱讀了官網文檔,文檔指出是引入了spring cloud consul:
於是我直接採用了springcloud consul的配置。
解決方案:
1、還是引入官網的插件配置:
<!--consul-->
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-consul-client</artifactId>
<version>${cas.version}</version>
</dependency>
2、在resource下面新建bootstrap.yml(注意bootstrap.properties不可用):
spring:
application:
name: o2o-support-idaas-cas
cloud:
consul:
host: 10.251.76.103
port: 8500
discovery:
instanceId: ${spring.application.name}-${server.port}-${spring.cloud.client.hostname}
prefer-ip-address: true
health-check-path: ${management.context-path}/health
healthCheckInterval: 15s
fail-fast: false
register-health-check: true
health-check-critical-timeout: 5m
config:
enabled: ${SPRING_CONFIG_ENABLED:true}
prefix: config
defaultContext: ${spring.application.name}
format: PROPERTIES
server:
port: 10001
management:
context-path: /cas/status
security:
enabled: false
(注意:使用${spring.cloud.client.hostname},請加入插件spring-boot-starter-actuator)