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

#
# camel - main
#
camel.main.name = camel-k-runtime-examples-yaml
camel.main.stream-caching-enabled = true
camel.main.stream-caching-spool-directory = ${java.io.tmpdir}/camel-q
camel.main.exchange-factory = pooled
camel.main.exchange-factory-capacity = 25
camel.main.exchange-factory-statistics-enabled = true

#
# camel-k - sources (routes)
#
camel.k.sources[0].location = file:/etc/camel/sources/routes.yaml
camel.k.sources[0].type     = source
