## ---------------------------------------------------------------------------
## 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.org.apache.camel.spring.boot = INFO
logging.level.org.apache.camel.health = DEBUG
logging.level.org.apache.camel.impl.health = DEBUG
logging.level.sample.camel = DEBUG

# expose actuator endpoint via HTTP
management.endpoints.web.exposure.include=health

# show verbose health details (/actuator/health) so you can see Camel information also
management.endpoint.health.show-details=always

camel.springboot.name = MyCamel

# enable JMX which allows to also control health check
camel.springboot.jmx-enabled = true

# properties used in the route
myPeriod = 10s

# enable supervised route controller which will startup routes in safe manner
camel.springboot.route-controller-supervise-enabled = true

# attempt up till 10 times to start a route (and exhaust if still failing)
# when a route is exhausted then its taken out as being supervised and
# will not take part of health-check either (UNKNOWN state)
camel.springboot.route-controller-back-off-max-attempts = 10
# when starting a route (and restarts) fails all attempts
# then we can control whether the route should be influence the health-check
# and report the route as either UNKNOWN or DOWN. Setting this option to true
# will report it as DOWN otherwise its UNKNOWN
###camel.springboot.route-controller-unhealthy-on-exhausted = true

# enable health check (is automatic enabled if discovered on classpath)
# global flag to enable/disable
camel.health.enabled = true
# context check is default included but we can turn it on|off
camel.health.context-enabled = true
# routes check is default included but we can turn it on|off
camel.health.routes-enabled = true
# registry check is default included but we can turn it on|off
camel.health.registry-enabled = true

# you can turn on or off individual routes as shown below
### camel.heath.config[timer].parent = routes
### camel.heath.config[timer].enabled = true
### camel.heath.config[netty].check = routes
### camel.heath.config[netty].enabled = false

# and configure each individually
camel.health.config[timer].parent = routes
camel.health.config[timer].interval = 5000
camel.health.config[netty].parent = routes
camel.health.config[netty].interval = 20000
camel.health.config[netty].failure-threshold = 10

# find grained routes configuration per route (support wildcards)
# (enabled is default true for discovered health-checks)
### camel.health.config[*].enabled = true

# allow 5 failures with 10s apart as slack to handle routes being flaky
# however if after 5 failures then the state will be regarded as DOWN onwards
# (the route can recover and the state will then be UP)
###camel.health.config[*].parent = routes
###camel.health.config[*].interval = 10s
###camel.health.config[*].failure-threshold = 5

