{
  //Credenciais de banco dos parceiros
  "DatabasePartner": {
    "Host": "rds-equipa-01-instance-1.cqvqgiku65j3.us-east-1.rds.amazonaws.com",
    "Port": "3306",
    "User": "docservice",
    "Pass": "leopardo2025"
  },

  //Configurações de leitura de mensagens
  "QueueReader": {

    //Modo de leitura (database, SQS)
    "Mode": "database",

    //Configurações AWS (Mode = SQS)
    "AwsAccessKey": "AKIAWRHALYUEIMNH4TIS",
    "AwsSecretAccessKey": "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",

    //URL das filas de leitura (Mode = SQS)
    "AgentUrl": "AgentQueue.fifo",
    "InventoryUrl": "InventoryQueue.fifo",
    "CounterUrl": "CounterQueue.fifo",
    "SupplyUrl": "SupplyQueue.fifo",
    "SupplyVolumeUrl": "SupplyVolumeQueue.fifo",
    "PrinterEventUrl": "PrinterEventQueue.fifo",

    //Configurações de thread (Mode = SQS)
    "AgentThreads": "1",
    "InventoryThreads": "1",
    "CounterThreads": "1",
    "SupplyThreads": "1",
    "SupplyVolumeThreads": "1",
    "PrinterEventThreads": "1",

    //Configurações da fila (Mode = SQS)
    //Tempo de espera para realizar uma nova leitura quando não houver mensagens
    "SecondsToWaitProcess": "10",
    //Qtd de mensagens lidas por vez
    "MaxNumberOfMessages": "10",
    //Tempo máximo para retorno da requisição de leitura (se houver mensagens o retorno é imediato, se não houver, aguarda o tempo definido)
    "SecondsToWaitMessages": "10",

    //Credenciais de banco das filas (Mode = database)
    "QueueDbHost": "rds-equipa-01-instance-1.cqvqgiku65j3.us-east-1.rds.amazonaws.com",
    "QueueDbPort": "3306",
    "QueueDbName": "mps",
    "QueueDbUser": "docservice",
    "QueueDbPass": "leopardo2025"
  },

  //Configurações gerais de banco
  "DatabaseConfigurations": {
    //Timeout de comando em segundos
    "CommandTimeout": "600",
    //Número de tentativas além da primeira que o método de banco será executado antes de assumir que deu falha
    "Retries": "5",
    //Intervalo de tempo de espera entre cada tentativa de execução além da primeira
    "SecondsToWait": "5"
  },

  //Gravação de log
  "Log": {
    //Tipo de saída do log (console, file, database)
    "Mode": "database",
    //Habilita log de sucesso
    "Success": "false",
    //Habilita log de informação
    "Info": "true",
    //Habilita log de aviso
    "Warning": "true",
    //Habilita log de erro
    "Error": "true",
    //Habilita log de estatística
    "Statistic": "true"
  },

  //Agentes
  "Agent": {
    //Habilita processamento de agentes
    "EnableProcess": "true",
    //Quantidade de agentes processados por pacote (Mode = database)
    "RegistriesToProcess": "500",
    //Tempo de espera em segundos caso a fila de agentes esteja zerada
    "SecondsToWaitProcess": "5"
  },

  //Inventário
  "Inventory": {
    //Habilita processamento de inventário
    "EnableProcess": "true",
    //Quantidade de dispositivos processados por pacote (Mode = database)
    "RegistriesToProcess": "500",
    //Tempo de espera em segundos caso a fila de inventário esteja zerada (Mode = database)
    "SecondsToWaitProcess": "5",
    //Funcionamento do portal do distribuidor (adiciona todos os equipamentos como desativados e não ativa automaticamente a cada comunicação do inventário)
    "DistributorPortalProcess": "true"
  },

  //Contadores
  "Counter": {
    //Habilita processamento de contadores normais
    "EnableProcess": "true",
    //Habilita reprocessamento de contadores normais
    "EnableReProcess": "true",
    //Habilita limpeza da fila de reprocessamento de contadores normais
    "EnableClearReProcess": "true",

    //Habilita processamento de contadores em atraso
    "EnableDelayProcess": "true",
    //Habilita reprocessamento de contadores em atraso
    "EnableDelayReProcess": "true",
    //Habilita limpeza da fila de reprocessamento de contadores em atraso
    "EnableDelayClearReProcess": "true",

    //Quantidade de contadores normais e em atraso processados por pacote (Mode = database)
    "RegistriesToProcess": "500",
    //Tempo de espera em segundos caso a fila de contadores normais e em atraso estejam zeradas (Mode = database)
    "SecondsToWaitProcess": "5",
    //Tempo de espera em segundos entre cada tentativa de reprocessamento de contadores normais e em atraso (Mode = database)
    "SecondsToWaitReProcess": "10",
    //Quantidade de dias que os contadores normais e em atraso que falharam na primeira tentativa de processamento serão mantidos (Mode = database)
    "DaysToKeepReProcess": "2",
    //Intervalo de tempo em minutos para limpeza de contadores que falharam na primeira tentativa de processamento (Mode = database)
    "MinutesToClearReProcess": "120",
    //Quantidade de registros a serem excluídos por ciclo na limpeza de contadores que falharam na primeira tentativa de processamento (Mode = database)
    "RegistriesToClearReProcess": "500",

    //Percentual mínimo da relação entre a coleta atual e a coleta anterior para considerar o contador como válido (abaixo desse percentual houve reset)
    "BreakCounterPercent": "90",
    //Inteiro de 1 a 8 (Mode = database)
    "Threads": "8",
    //Inteiro de 1 a 8 (Mode = database)
    "DelayThreads": "2"
  },

  //Suprimentos
  "Supply": {
    //Habilita processamento de suprimentos
    "EnableProcess": "true",
    //Habilita processamento de suprimentos por volume
    "VolumeEnableProcess": "true",
    //Quantidade de suprimentos processados por pacote (Mode = database)
    "RegistriesToProcess": "500",
    //Tempo de espera em segundos caso a fila de suprimentos esteja zerada (Mode = database)
    "SecondsToWaitProcess": "5",
    //Tempo de espera em segundos entre cada tentativa de reprocessamento de suprimentos (Mode = database)
    "SecondsToWaitReProcess": "10",
    //Quantidade de dias que os suprimentos que falharam na primeira tentativa de processamento serão mantidos (Mode = database)
    "DaysToKeepReProcess": "2",
    //Intervalo de tempo em minutos para limpeza de suprimentos que falharam na primeira tentativa de processamento (Mode = database)
    "MinutesToClearReProcess": "120",
    //Quantidade de registros a serem excluídos por ciclo na limpeza de suprimentos que falharam na primeira tentativa de processamento (Mode = database)
    "RegistriesToClearReProcess": "500",
    //Threads de processamento de suprimentos (Inteiro de 1 a 8) (Mode = database)
    "Threads": "1",
    //Threads de processamento de suprimentos por volume (Inteiro de 1 a 8) (Mode = database)
    "VolumeThreads": "1"
  },

  //Eventos
  "PrinterEvent": {
    //Habilita processamento de eventos
    "EnableProcess": "true",
    //Quantidade de dispositivos processados por pacote (Mode = database)
    "RegistriesToProcess": "500",
    //Tempo de espera em segundos caso a fila de eventos esteja zerada (Mode = database)
    "SecondsToWaitProcess": "5",
    //Threads de processamento de eventos (Inteiro de 1 a 8) (Mode = database)
    "Threads": "1"
  },

  //Cache de nomes dos bancos dos parceiros
  "DatabaseCache": {
    //Intervalo de tempo em segundos para renovação do cache de nomes dos databases
    "CacheDatabaseTimeInterval": "5",
    //Database utilizado para login no método de atualização do cache de nomes dos databases
    "CacheDatabaseName": "distribuidor"
  }

}
