Spring-Cloud整合Spring-Session的注意點
今天剛學習,但原文中還沒有更新關於如何整合Spring-Session。我就想動手試一試,結果遇到了不少問題,在這裡記錄下來,做一個分享。
專案的結構很簡單,就是zuul+feign+一個微服務的結構,然後想透過spring-session共享同一個session。透過後,成功的執行了專案,但是發現zuul,feign,微服務中三處列印出來的sessionId都不相同。透過瀏覽器除錯可以確定spring-session是其作用了。
如果是tomcat的session,cookie的name應該是JSESSIONID,這裡顯示SESSION說明spring-session是其作用了,而且也可以在redis中找到對應的記錄。那麼產生三處session都不同的原因應該就是zuul轉發給feign,feign呼叫微服務的時候都沒有把cookie傳過去。找到原因後,就有解決的思路了。
透過查詢發現,zuul預設是遮蔽Cookie的,要想使用Cookie,要在application.yml中配置sensitiveHeaders並把它設為空,這是一個遮蔽的黑名單,預設不為空,會遮蔽Cookie,例子如下:
zuul: routes: feign-a: path: /feign-a/** serviceId: fegin-service-a sensitiveHeaders:
透過這個配置zuul已經可以把cookie傳到feign中了,那麼feign要如何把cookie傳到微服務中呢?我們可以透過feign的RequestInterceptor介面來實現
@Configurationpublic class FeignConfig { @Bean public RequestInterceptor requestInterceptor() { return requestTemplate -> { String sessionId = RequestContextHolder.currentRequestAttributes().getSessionId(); if (!Strings.isNullOrEmpty(sessionId)) { requestTemplate.header("Cookie", "SESSION=" + sessionId); } }; } }
本以為這樣就完事大吉了,但是還是出錯了,報了找不到與執行緒繫結的request的異常。透過除錯初步判斷應該是feign整合了hystrix的鍋。這裡整了好久還是沒解決,最後還是在找到了解決辦法。透過更改hystrix的預設策略為SEMAPHORE可以解決。
hystrix: command: default: execution: isolation: strategy: SEMAPHORE
作者:黃瓜精
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/818/viewspace-2820537/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- spring-boot 整合 spring-sessionSpringbootSession
- SpringBoot2.x 整合Spring-Session實現Session共享Spring BootSession
- spring-sessionSpringSession
- vector的使用注意點
- 安裝pybrain的注意點AI
- spring-cloud 服務治理SpringCloud
- Spring-Cloud之hello worldSpringCloud
- Golang switch case 的使用注意點Golang
- AUTHID CURRENT_USER的注意點
- CSS中will-change的注意點CSS
- MySQL的clone(克隆)要注意的點MySql
- 錫焊注意點
- 分享mysql注意點MySql
- FMDB 使用注意點
- 119 路由注意點路由
- Spring-Cloud之Feign原理剖析SpringCloud
- Spring-Cloud之Ribbon原理剖析SpringCloud
- 說點JSON使用的注意事項JSON
- 寫小說主要注意的點
- Collectors.toMap的幾個注意點
- MYSQL 8.0 Upgrade &Downgrade的幾點注意MySql
- Flink - Checkpoint配置注意點
- PHP 抽象類繼承抽象類時的注意點PHP 抽象類繼承抽象類時的注意點PHP抽象繼承
- wordpress的save_post鉤子注意點
- golang split需要注意的一個點Golang
- 介面文件設計的12個注意點
- 關於CORS 應該注意的幾點CORS
- mysql寫function時的注意點記錄MySqlFunction
- Python Enum 使用的幾點注意事項Python
- LeetCode BFS題目以及要注意的點LeetCode
- 閘道器 zuul 與 spring-cloud gateway的區別ZuulSpringCloudGateway
- 新版idea配置maven注意點!!IdeaMaven
- 型別轉換注意點型別
- CUDA常用概念及注意點
- 整合環信IM SDK及使用注意事項
- 關於golang隨機種子的注意點Golang隨機
- java Spring讀取properties檔案的注意點JavaSpring
- Spring事務需要注意的幾個點Spring