Queries bootstrap data from the bootstrap server and initializes an MQTT client and a logger for services.
Install this library via npm:
npm install @artcom/bootstrap-clientBootstrap as follows:
import { init, subscribeToConfigChange } from "@artcom/bootstrap-client"
const { logger, mqttClient, queryConfig, data } = await init(bootstrapUrl, serviceId)
// log something
logger.info("Hello world!")
// publish "bar" to topic "foo"
mqttClient.publish("foo", "bar")
// query some configurations with (optional) options
const myConfig = await queryConfig("config/path", { version: "master", listFiles: false, includeCommitHash = false, parseJSON = true })
// use raw bootstrap data
logger.info(`I am running on device: ${data.device}`)
// subscribe to configuration changes
subscribeToConfigChange(
mqttClient,
"device/config/changes", // The topic to listen on
["config.json", "assets/"], // Watch specific files or directories
"master", // The config version to match
async () => {
logger.info("Configuration changed, reloading...")
}
)The following additional options are supported:
timeout: is the time in milliseconds until the query times out, default:2000retryDelay: is the time in milliseconds until the query is sent again, default:10000debugBootstrapData: can be set to skip querying data from the bootstrap server for debugging, default:null
The client expects the following properties in the bootstrap server response or debugBootstrapData:
{
tcpBrokerUri: string,
httpBrokerUri: string,
configServerUri: string,
device: string
}Checkout the bootstrap server documentation for details.