# Parametrização do Suricato Placa

## Visão Geral

Este procedimento descreve a **parametrização do Suricato Placa**, responsável por definir o comportamento da aplicação, controle de execução, processamento em memória e configuração de conexão com o banco de dados.

As configurações são realizadas por meio do arquivo **application.properties**, onde são definidos parâmetros de debug, tempos de execução, limites de processamento e dados de conexão.

## Regras de Negócio

Antes de realizar a parametrização, observe as seguintes diretrizes técnicas do sistema:

* **Arquivo de Configuração:** Toda a configuração da aplicação é feita exclusivamente no arquivo `application.properties`.
* **Modo Debug:** O modo de debug deve ser utilizado apenas para análise e diagnóstico em ambiente controlado.
* **Unidade de Tempo:** Os tempos (*timeout*) são definidos obrigatoriamente em milissegundos.
* **SGBD Ativo:** O banco de dados ativo deve ser configurado corretamente de acordo com o ambiente (`MSSQL` ou `ORACLE`).
* **Perfil de Banco:** Apenas um perfil de banco de dados deve estar ativo por vez no arquivo de propriedades.
* **Pool de Conexão:** Alterações no pool de conexão devem ser realizadas com critério técnico, pois impactam diretamente o desempenho e o consumo de recursos do servidor.
* **Validação Prévia:** Recomenda-se validar todas as configurações preenchidas antes de efetuar a inicialização do serviço.

## Parametrização

{% stepper %}
{% step %}

#### Parametrizar a Aplicação

Localize e abra o arquivo:

```
application.properties
```

{% endstep %}

{% step %}

#### Configurar modo de Debug

Ative ou desative o modo de debug no log:

```
debug=TRUE
```

* **TRUE** → Ativa o debug
* **FALSE** → Desativa o debug
  {% endstep %}

{% step %}

#### Configurar tempos de execução

Defina os intervalos de execução dos processos:

```
refresh.timeout=5000
```

Tempo (em milissegundos) que o sistema aguarda para executar o ciclo de sincronismo.\
\&#xNAN;*(1000 = 1 segundo)*

```
monitor.timeout=5000
```

Tempo (em milissegundos) que o sistema aguarda para executar o ciclo de monitoramento dos processos (threads).
{% endstep %}

{% step %}

#### Configurar limites de processamento

Defina os limites de uso de memória e processamento:

```
max.device=100
```

Tamanho máximo da estrutura de lista de equipamentos em memória.

```
max.worker.thread=3
```

Tamanho máximo do pool de threads para processamento paralelo.
{% endstep %}

{% step %}

#### Configurar conexão com banco de dados (MSSQL)

Ative o perfil MSSQL e configure os dados de conexão:

```
spring.profiles.active=MSSQL
spring.datasource.driverclassname=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://172.16.14.239;databaseName=suricato;encrypt=false
spring.datasource.username=suricato
spring.datasource.password=559c77858b83858d95
```

{% endstep %}

{% step %}

#### Configurar conexão com banco de dados (ORACLE)

Caso utilize Oracle, descomente e configure os parâmetros abaixo:

```
#spring.profiles.active=ORACLE
#spring.datasource.driverclassname=oracle.jdbc.OracleDriver
#spring.datasource.url=jdbc:oracle:thin:@( DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.14.239)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) )
#spring.datasource.username=suricato
#spring.datasource.password=559c77858b83858d95
```

{% hint style="danger" %}
**Importante:** Mantenha apenas **um banco ativo por vez**.
{% endhint %}
{% endstep %}

{% step %}

#### Configurar Pool de Conexão

Ajuste os parâmetros do pool de conexões conforme necessidade:

```
#maximum number of milliseconds that a client will wait for a connection
spring.datasource.hikari.connection-timeout=60000

spring.datasource.hikari.connection-test-query=SELECT 1 FROM SURICATO.SURI

#minimum number of idle connections maintained by HikariCP in a connection pool
spring.datasource.hikari.minimum-idle=100         

#maximum pool size
spring.datasource.hikari.maximum-pool-size=3000

#maximum idle time for connection
spring.datasource.hikari.idle-timeout=10000

#maximum lifetime in milliseconds of a connection in the pool after it is closed.
spring.datasource.hikari.max-lifetime=600000

#default auto-commit behavior.
spring.datasource.hikari.auto-commit=true
```

{% endstep %}
{% endstepper %}

## FAQ – Perguntas Frequentes

<details>

<summary>Onde faço a parametrização da aplicação?</summary>

No arquivo **application.properties**.

</details>

<details>

<summary>Posso ativar MSSQL e ORACLE ao mesmo tempo?</summary>

Não. Apenas **um perfil de banco de dados deve estar ativo por vez**.

**O que acontece se eu configurar tempos muito baixos?**

A aplicação pode consumir mais recursos e aumentar a carga de processamento.

</details>

<details>

<summary>Para que serve o parâmetro debug?</summary>

Permite ativar logs detalhados para análise e diagnóstico.

</details>

<details>

<summary>Posso alterar o número de threads?</summary>

Sim, através do parâmetro **max.worker.thread**, mas deve ser feito com cautela.

</details>

<details>

<summary>O que é o pool de conexão?</summary>

É o conjunto de conexões reutilizáveis com o banco de dados, utilizado para melhorar desempenho.

</details>

<details>

<summary>Preciso reiniciar o serviço após alterar o arquivo?</summary>

Sim. Após qualquer alteração no **application.properties**, é necessário reiniciar o serviço para aplicar as mudanças.

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://software-telematica-com.gitbook.io/suricato-docs/central-tecnica/instalacao-e-configuracao-de-servicos-do-suricato/instalacao-e-configuracao-do-suricato-placa/parametrizacao-do-suricato-placa.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
