This topic explains how to use the SDK Consul integration as a persistent feature store.
Consul does not support storing values greater than 512KB. Using Consul as a persistent feature store does not work if the JSON representation of any feature flag or segment exceeds that size. To learn more about these limitations, read Consul’s documentation.
The Consul integrations for all LaunchDarkly server-side SDKs use the same conventions, so that SDK instances and Relay Proxy instances sharing a single Consul store can interoperate correctly.
The storage schema is as follows:
launchdarkly.PREFIX/TYPE/KEY. PREFIX is the configured prefix string. TYPE denotes the type of data such as features and segments. KEY is the unique key of the item. For example, a KEY could be the flag key for a feature flag. The value is a serialized representation of that item, in a format that is determined by the SDK.PREFIX/$inited, is created with an arbitrary value when the SDK stores a full set of feature flag data. This allows a new SDK instance to check whether there is already a valid data set that was stored earlier.PREFIX string, so you should not assume that the TYPE values mentioned above and $inited are the only possible keys. But the SDK never adds, modifies, or removes any keys in Consul other than ones starting with the PREFIX, so it is safe to share a Consul instance that is also being used for other purposes.In the following examples, the Consul feature store is set to use a host address of my-consul:8100, a prefix string of "my-key-prefix", and a cache TTL of 30 seconds.
This feature is available in the following server-side SDKs:
If using the .NET SDK, you must install the additional package LaunchDarkly.ServerSdk.Consul.
To learn more, read dotnet-server-sdk-consul.
The Go integration is in github.com/launchdarkly/go-server-sdk-consul for version 5.0.0 or higher of the SDK. In versions 4.5.0 and higher, but below 5.0.0, it is in the main SDK distribution as the subpackage ldconsul.
To learn more, read go-server-sdk-consul.
If using the Java SDK, you must install the additional package com.launchdarkly.launchdarkly-java-server-sdk-consul-store.
To learn more, read java-server-sdk-consul.
If using the Node.js SDK you must install the additional package launchdarkly-node-server-consul.
The Node.js (server-side) SDK v8.0 does not include Consul support. If you have questions or want to request this, start a Support ticket.
In version 4.0 and higher of the PHP SDK, you must add the package launchdarkly/server-sdk-consul to your application’s Composer dependencies to use the Consul integration.
In versions 3.x and earlier, the Consul integration is built into the main SDK package, but you must add a package dependency for aws/sensiolabs/consul-php-sdk.
To use the Consul integration:
To learn more, read php-server-sdk-consul.
The Python integration is part of the main SDK distribution as of version 6.8.1, but you must also install the package python-consul. Python 3.3 and 3.4 are not supported.
The Ruby integration is part of the main SDK distribution as of version 5.1.1, but you must also install the gem diplomat.