2.4.1. Setting Integration Provider#
Setting uygulaması sağlamış olduğu provider paketi ile uygulamaların ihtiyaç duyduğu ayar verilerinin runtime'da daha efektif olarak alınmasını sağlamaktadır. Bu paket ile ayarların client tarafında in-memory cachelenmesi sağlanmaktadır, bu sayede client uygulamalarının performans artış sağlanması hedeflenmiştir. Ayrıca built-in sunulan kafka consumer ile setting uygulamasında yapılan değişiklerin okunup cache evict edilmesi sağlanmaktadır. Setting uygulamasına erişim olmadığı veya erişime ihtiyaç duyulmadığı (development vb.) durumlarda circuit breaker pattern'i ile default değerlere erişim sağlayabilecek alt yapı beraberinde sunulmuştur. Circuit-breaker'ın devreye girebilmesi için yapılması gerekenler;
hvl.system.setting.circuit-breaker-enabled
true yapmak- Default değerlerin ne olacağını belirleyeceğiniz
HvlSystemSettingIntegrationGenerator
interface'in implemantasyonunu geliştirmek
Setting Integration Provider Topoloji aşağıdaki gibidir:
Kütüphane#
Gradle Dependencies
compile (
[group: 'tr.com.havelsan.framework.system', name: 'hvl-system-setting-integration-provider']
)
Servis Tanımı#
Servis Kullanımı
HvlSystemSettingIntegrationProvider.java
@Validated
public interface HvlSystemSettingIntegrationProvider {
/**
* Method that returns number setting data by code
*
* @param code the code
* @return number setting by code
*/
long getNumberSettingByCode(@NotBlank @Size(max = HvlSettingConstraint.CODE_SIZE) String code);
/**
* Method that returns string setting data by code
*
* @param code the code
* @return string setting by code
*/
String getStringSettingByCode(@NotBlank @Size(max = HvlSettingConstraint.CODE_SIZE) String code);
/**
* Method that returns boolean setting data by code
*
* @param code the code
* @return boolean setting by code
*/
boolean getBooleanSettingByCode(@NotBlank @Size(max = HvlSettingConstraint.CODE_SIZE) String code);
/**
* Method that returns number setting data by code and tenant
*
* @param code the code
* @param tenant the tenant
* @return number setting by code
*/
long getNumberSettingByCodeAndTenant(@NotBlank @Size(max = HvlSettingConstraint.CODE_SIZE) String code,
@Size(max = HvlSettingConstraint.TENANT_SIZE) String tenant);
/**
* Method that returns string setting data by code and tenant
*
* @param code the code
* @param tenant the tenant
* @return string setting by code
*/
String getStringSettingByCodeAndTenant(@NotBlank @Size(max = HvlSettingConstraint.CODE_SIZE) String code,
@Size(max = HvlSettingConstraint.TENANT_SIZE) String tenant);
/**
* Method that returns boolean setting data by code and tenant
*
* @param code the code
* @param tenant the tenant
* @return boolean setting by code
*/
boolean getBooleanSettingByCodeAndTenant(@NotBlank @Size(max = HvlSettingConstraint.CODE_SIZE) String code,
@Size(max = HvlSettingConstraint.TENANT_SIZE) String tenant);
}
Setting Integration Kütüphanesinin Yml Üzerinden Kullanılabilecek Özellikleri#
Parametre İsmi | Açıklaması |
---|---|
hvl.system.setting.circuit-breaker-enabled | true → circuit breaker'ı aktif hale getiren değerdir. Bu değer ile setting uygulaması kapalı olsa dahi çalışma devam eder. |