## ---------------------------------------------------------------------------
## Licensed to the Apache Software Foundation (ASF) under one or more
## contributor license agreements.  See the NOTICE file distributed with
## this work for additional information regarding copyright ownership.
## The ASF licenses this file to You under the Apache License, Version 2.0
## (the "License"); you may not use this file except in compliance with
## the License.  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------

debug = false

logging.level.org.springframework = INFO
logging.level.io.atomix = DEBUG
logging.level.org.apache.camel.cluster = DEBUG
logging.level.org.apache.camel.impl.cluster = DEBUG
logging.level.org.apache.camel.component.atomix = DEBUG
logging.level.org.apache.camel.examples.cluster = DEBUG

camel.springboot.name = SampleClusteredRouteController

camel.clustered.controller.enabled = true
camel.clustered.controller.namespace = camel
camel.clustered.controller.initial-delay = 5000

# local route that is no clustered
camel.clustered.controller.routes.heartbeat.clustered = false

camel.cluster.atomix.enabled = true
camel.cluster.atomix.mode = client
camel.cluster.atomix.nodes = localhost:8700
camel.cluster.atomix.id = ${nodeId}
