Java 快速入門
幾分鐘之內,你的 Java 服務就會在行程內評估 feature flags:每次檢查不走網路、你的請求路徑上沒有延遲,一次輪詢服務你的行程處理的每一個請求。
零相依,包括 JSON:SDK 自帶一個小型解析器,所以你的相依樹不會多出任何新東西。它在 Java 17 及之後的版本上執行。
這個 SDK 放在 GitHub 上的公開儲存庫裡,在發布標籤克隆它、建置它,並納入你的建置,例如作為 Gradle included build,或把 jar 發布到你的內部套件庫:
git clone --branch v1.0.0 https://github.com/FortressFlag/FortressFlag_SDK_javacd FortressFlag_SDK_java && ./gradlew build2. 伺服器金鑰:貨真價實的機密
Section titled “2. 伺服器金鑰:貨真價實的機密”這個 SDK 使用伺服器金鑰(ffs_…),它和行動與 Web SDK 隨附出貨的用戶端金鑰正好相反:它可以下載你的完整 ruleset,包含鎖定規則。把它完全當成資料庫密碼來對待:環境變數或機密管理器,永遠不放進程式碼、永遠不放進儲存庫、永遠不放進日誌。兩類金鑰,並排比較。
3. 啟動用戶端
Section titled “3. 啟動用戶端”import com.fortressflag.server.Client;import com.fortressflag.server.Configuration;import com.fortressflag.server.FortressFlag;import java.time.Duration;
Client client = FortressFlag.create( Configuration.builder(System.getenv("FF_SERVER_KEY")).build());// ^ SDK 唯一會拋出例外的地方:格式錯誤的金鑰,在任何東西開始提供之前。
client.start(Duration.ofSeconds(15)); // 在第一份 ruleset 到達(或期限到了)時返回
// ... 你的服務執行;flag 檢查現在是記憶體內的方法呼叫。start 永遠不會拋出例外:如果第一次抓取無法及時完成,用戶端會在它的背景執行緒上持續重試,而你的呼叫者在此期間拿到他們的回退值。輪詢器跑在 daemon 執行緒上:它永遠不會阻止你的 JVM 退出。
4. 評估一個 flag
Section titled “4. 評估一個 flag”import com.fortressflag.server.Context;import java.util.Map;
boolean enabled = client.boolValue( "new-checkout", new Context( "user-42", // 你的穩定內容鍵:使用者 id、工作階段 id,由你決定 Map.of("cohort", "beta")), false); // flag 未知或從未抓取到任何東西時的回退值client.stringValue 和 client.numberValue 的用法一樣。內容鍵是百分比發布分桶的依據:始終傳入同一個識別碼,每位使用者就會得到穩定的分群。那是你的資料:SDK 永遠不驗證、不儲存、也不記錄它。
就這樣,你的服務正在本地評估 flag。儀表板的變更會在大約一分鐘內送達每一個行程。
評估永遠不會失敗
Section titled “評估永遠不會失敗”boolValue、stringValue 和 numberValue 永遠會回答,永遠不會拋出例外:flag 出問題絕不能拖垮你的服務。重新啟動的行程在第一次抓取完成之前提供你呼叫處的回退值(或者在 builder 上設定 cachePath,把最後一份 ruleset 持久化到你選的檔案,重新啟動就會立即從它恢復)。就連被撤銷的金鑰也不會弄壞任何東西:SDK 會繼續用它最後下載的 ruleset 評估,直到你交給它一把新金鑰。
- Flag 如何送達你的應用程式:伺服器平面的說明
- 金鑰:鑄造、輪替和撤銷
ffs_金鑰 - 鎖定對象:你的服務現在正在評估的那些規則