This sample shows you how to create feature flags and integrate feature filters in a Java application using Azure App Configuration.
-
In the Azure portal, navigate to your App Configuration store and select Settings > Access keys from the sidebar. Select the Read-only keys tab and copy the value of the primary connection string.
-
Add the primary connection string as an environment variable using the variable name
APP_CONFIGURATION_CONNECTION_STRING
.setx ConnectionString "connection-string-of-your-app-configuration-store"
Note: Make sure to restart your terminal/IDE to load the new Environment Variable.
In the Azure portal navigate to your configuration store. Select Feature manager > +Add from the sidebar, and create a feature flag called Beta
. Leave the Label
and Description
fields undefined. Select Apply to save the new feature flag.
This sample is an On/Off feature flag that switches between returning the messages "Hello Word" and "Bye World".
To add feature filters to this sample, update the Beta
feature flag. Navigate to Feature manager and on your Beta
flag click ... then Edit.
Click Add Filter and add a filter with Key value percentageFilter. Click on the ... and select Edit parameters. Add a parameter called percentage-filter-setting with a value of "50". This will result in the feature being randomly either on or off, with a 50 percent probability for each.
Another built in filter is TimeWindowFilter
. This filter returns true only if either; your current time is between the start and end date, after the start date, or before the end date. Integrate the TimeWIndowFilter
by adding it to the featureFilters HashMap
in HelloWorld.java.
featureFilters.put("TimeWindowFilter", new TimeWindowFilter());
In FilterParameters.java, update the TimeWindowFilter
parameters. Aad the start and/or end dates to your feature filter. For example, Start "Wed, 01 May 2019 13:59:59 GMT"
and End "Mon, 01 July 2019 00:00:00 GMT"
.
Additionally you can create your own feature flag filters by implementing the class FeatureFilter.java
and following the same process used to add the TimeWindowFilter
.
mvn clean install
java -jar target\feature-management\feature-management.jar
Example Output:
[main] INFO com.azure.data.appconfiguration.ConfigurationAsyncClient - Listing ConfigurationSettings - SettingSelector(keyFilter=.appconfig*, labelFilter= , acceptDateTime=null, fields=ALL_FIELDS)
[reactor-http-nio-1] INFO com.azure.data.appconfiguration.ConfigurationAsyncClient - Listed ConfigurationSettings - SettingSelector(keyFilter=.appconfig*, labelFilter= , acceptDateTime=null, fields=ALL_FIELDS)
Hello World