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

# override common configurations in common module
servicecomb-config-order: 100

APPLICATION_ID: authentication-application
service_description:
  version: 0.0.1
  name: edge-service
  environment: development

servicecomb:
  service:
    registry:
      address: http://localhost:30100
      instance:
        watch: false

  rest:
    address: 0.0.0.0:9090

  handler:
    chain:
      Consumer:
        default: internalAccess,auth,qps-flowcontrol-consumer,loadbalance
        service:
          authentication-server: internalAccess,qps-flowcontrol-consumer,loadbalance
          authentication-client: internalAccess,qps-flowcontrol-consumer,loadbalance

  uploads:
    directory: tmp_for_upload_gateway

  samples:
    logdir: D:\code\servicecomb-samples\porter_lightweight\gateway-service
    
  inspector:
    enabled: false

  executors:
   Provider:
     log: servicecomb.samples.executor.groupThreadPool
     inspector: servicecomb.samples.executor.groupThreadPool

# disable all servicecomb difault dispatchers, all of them are overriden
  http:
    dispatcher:
      edge:
        default:
          enabled: false # overriden by ApiDispatcher
      rest:
        eanbled: false # overriden by CustomVertxRestDispatcher

# StaticWebpageDispatcher checking file exists is async, and will mark request status to ended, and VertxRestDispatcher read 
# body will print exception. 
#gateway.webroot: /code/servicecomb-samples/porter_lightweight/gateway-service/src/main/resources
