## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------

# the name of Camel
camel.springboot.name = MyCamel

# what to say
greeting = Hello World

# how often to trigger the timer (millis)
myPeriod = 2000

# to watch bean introspection using java reflection usage
# camel.springboot.bean-introspection-logging-level=INFO

# to automatic shutdown the JVM after a period of time
#camel.springboot.duration-max-seconds=60
#camel.springboot.duration-max-messages=100

# add for example: &repeatCount=5 to the timer endpoint to make Camel idle
#camel.springboot.duration-max-idle-seconds=15

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

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

# to turn off Camel info in (/actuator/info)
#management.info.camel.enabled=false

# to configure logging levels
#logging.level.org.springframework = INFO
#logging.level.org.apache.camel.spring.boot = INFO
#logging.level.org.apache.camel.impl = DEBUG
#logging.level.sample.camel = DEBUG

