https://github.com/link-it/govpay-aca-batch
Batch di alimentazione dell'ACA degli Avvisi pagoPA
https://github.com/link-it/govpay-aca-batch
Last synced: 5 months ago
JSON representation
Batch di alimentazione dell'ACA degli Avvisi pagoPA
- Host: GitHub
- URL: https://github.com/link-it/govpay-aca-batch
- Owner: link-it
- License: gpl-3.0
- Created: 2024-02-02T11:25:49.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-12-20T08:19:13.000Z (6 months ago)
- Last Synced: 2025-12-22T14:46:24.144Z (6 months ago)
- Language: Java
- Size: 427 KB
- Stars: 1
- Watchers: 8
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog
- License: LICENSE
Awesome Lists containing this project
README
# GovPay - Porta di accesso al sistema pagoPA - ACA Batch
[](https://sonarcloud.io/summary/new_code?id=link-it_govpay-aca-batch)
[](https://hub.docker.com/r/linkitaly/govpay-aca-batch)
[](https://raw.githubusercontent.com/link-it/govpay-aca-batch/main/LICENSE)
[](https://spring.io/projects/spring-boot)
## Sommario
Batch Spring Boot per l'alimentazione dell'Archivio Centralizzato Avvisi pagoPA.
## Requisiti
- JDK 21
- Maven 3.8+
- Database supportati: PostgreSQL, MySQL/MariaDB, Oracle
## Compilazione
Il progetto utilizza librerie Spring Boot versione 3.5.x e JDK 21.
Per la compilazione eseguire il seguente comando, verranno eseguiti anche i test:
```bash
mvn clean install -P [jar|war]
```
Il profilo permette di selezionare il packaging dei progetti (jar o war).
## Esecuzione
### 1. Modalità Standalone
Per l'avvio dell'applicativo come standalone con scheduler interno:
```bash
mvn spring-boot:run
```
Per sovrascrivere le proprietà definite nel file `application.properties`:
```bash
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.datasource.url=[NUOVO_VALORE] ..."
```
### 2. Modalità Cron
Avvio dell'applicazione per essere utilizzata all'interno di un cron esterno. Il batch viene eseguito una volta e l'applicazione termina:
```bash
java -Dspring.profiles.active=cron -jar target/govpay-aca-batch.jar \
--spring.batch.job.enabled=false \
--spring.main.web-application-type="none" \
--spring.datasource.url="[URL CONNESSIONE DB]" \
--spring.datasource.driverClassName="[CLASSE DRIVER JDBC]" \
--spring.datasource.username="[USERNAME DB]" \
--spring.datasource.password="[PASSWORD DB]" \
--spring.jpa.database-platform="[DIALECT JPA]" \
--spring.jpa.properties.hibernate.dialect="[DIALECT JPA]" \
--it.govpay.gpd.time-zone="Europe/Rome" \
--it.govpay.gpd.batch.client.header.subscriptionKey.name="Ocp-Apim-Subscription-Key" \
--it.govpay.gpd.batch.client.header.subscriptionKey.value="[VALORE SUBSCRIPTION-KEY]" \
--it.govpay.gpd.batch.client.debugging=[true|false] \
--it.govpay.gpd.batch.client.baseUrl="[BASE URL SERVIZIO GPD PAGOPA]" \
--it.govpay.gpd.batch.jobs.gpdSenderJob.steps.spedizionePendenzaStep.chunk-size=10 \
--it.govpay.gpd.batch.dbreader.sogliaTemporaleRicercaPendenze.numeroGiorni=7 \
--it.govpay.gpd.batch.clusterId=[CLUSTER_ID] \
--it.govpay.gpd.batch.stale-threshold-minutes=120 \
--it.govpay.gpd.batch.policy.reinvio.403.enabled=[true|false] \
--it.govpay.gde.enabled=[true|false] \
--it.govpay.gde.client.baseUrl=[BASE URL SERVIZIO GDE]
```
Esempio di configurazione crontab per esecuzione ogni 10 minuti:
```cron
*/10 * * * * /usr/bin/java -Dspring.profiles.active=cron -jar /opt/govpay-aca-batch/govpay-aca-batch.jar [OPZIONI...]
```
### 3. Docker
L'immagine Docker è disponibile su Docker Hub:
```bash
docker pull linkitaly/govpay-aca-batch:latest
```
#### Esempio con Docker Run (esecuzione singola)
```bash
docker run --rm \
-e GOVPAY_DB_TYPE=[postgresql|mysql|mariadb|oracle] \
-e GOVPAY_DB_SERVER=[HOST:PORTA] \
-e GOVPAY_DB_NAME=[NOME DATABASE] \
-e GOVPAY_DB_USER=[USERNAME DB] \
-e GOVPAY_DB_PASSWORD=[PASSWORD DB] \
-e GOVPAY_ACA_GPD_ENV=[prod|uat] \
-e GOVPAY_ACA_GPD_SUBSCRIPTIONKEY=[VALORE SUBSCRIPTION-KEY] \
linkitaly/govpay-aca-batch:latest
```
#### Esempio con Docker Compose (modalità cron interno)
```yaml
version: '3.8'
services:
govpay-aca:
image: linkitaly/govpay-aca-batch:latest
environment:
# Database
GOVPAY_DB_TYPE: [postgresql|mysql|mariadb|oracle]
GOVPAY_DB_SERVER: [HOST:PORTA]
GOVPAY_DB_NAME: [NOME DATABASE]
GOVPAY_DB_USER: [USERNAME DB]
GOVPAY_DB_PASSWORD: [PASSWORD DB]
# GPD pagoPA
GOVPAY_ACA_GPD_ENV: [prod|uat]
GOVPAY_ACA_GPD_SUBSCRIPTIONKEY: [VALORE SUBSCRIPTION-KEY]
# Modalità cron interno
GOVPAY_ACA_BATCH_USA_CRON: "true"
GOVPAY_ACA_BATCH_INTERVALLO_CRON: 5 # minuti
ports:
- "10001:10001" # Actuator health check
```
#### Esempio Kubernetes CronJob
```yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: govpay-aca-batch
spec:
schedule: "*/10 * * * *" # Ogni 10 minuti
jobTemplate:
spec:
template:
spec:
containers:
- name: govpay-aca
image: linkitaly/govpay-aca-batch:latest
envFrom:
- configMapRef:
name: govpay-aca-config
- secretRef:
name: govpay-aca-secrets
restartPolicy: OnFailure
```
Per la documentazione completa sulla configurazione Docker, consultare [docker/DOCKER.md](docker/DOCKER.md).
## Configurazione
All'interno del file `application.properties` sono definite le seguenti proprietà:
### Proprietà Server
```properties
# ----------- SPRING SERVLET ------------
server.port=[PORTA SERVIZIO STANDALONE]
# Abilitazione Endpoint /actuator/health/liveness
management.endpoints.web.base-path=[BASEPATH SERVIZI STATO APPLICAZIONE]
```
### Proprietà Database
```properties
# ------------ HIBERNATE & JPA -------------------
# Configurazione DB
#spring.datasource.jndiName=[JNDI NAME DEL DATASOURCE]
spring.datasource.url=[URL CONNESSIONE DB]
spring.datasource.driverClassName=[CLASSE DRIVER JDBC]
spring.datasource.username=[USERNAME DB]
spring.datasource.password=[PASSWORD DB]
spring.jpa.database-platform=[DIALECT JPA]
spring.jpa.properties.hibernate.dialect=[DIALECT JPA]
spring.jpa.hibernate.ddl-auto=[COMPORTAMENTO HIBERNATE GENERAZIONE SCHEMA]
```
### Proprietà GPD pagoPA
```properties
# -------------- GPD PAGOPA ----------------
# Informazioni per la connessione verso PagoPA
it.govpay.gpd.batch.client.header.subscriptionKey.name=[NOME HEADER SUBSCRIPTION-KEY]
it.govpay.gpd.batch.client.header.subscriptionKey.value=[VALORE SUBSCRIPTION-KEY]
it.govpay.gpd.batch.client.debugging=[true|false]
it.govpay.gpd.batch.client.baseUrl=[BASE URL SERVIZIO GPD PAGOPA]
```
**URL ambienti pagoPA:**
| Ambiente | URL |
|----------|-----|
| Produzione | `https://api.platform.pagopa.it/aca/debt-positions-service/v1/` |
| UAT/Collaudo | `https://api.uat.platform.pagopa.it/aca/debt-positions-service/v1/` |
### Proprietà Batch
```properties
# -------------- BATCH ----------------
# TimeZone applicazione
it.govpay.gpd.time-zone=Europe/Rome
# Dimensione del chunk di lavoro
it.govpay.gpd.batch.jobs.gpdSenderJob.steps.spedizionePendenzaStep.chunk-size=[DIMENSIONE CHUNK]
# Numero di giorni su cui limitare la ricerca delle pendenze da spedire al ACA
it.govpay.gpd.batch.dbreader.sogliaTemporaleRicercaPendenze.numeroGiorni=[LIMITE TEMPORALE RICERCA PENDENZE]
# Cluster ID (identificativo del nodo in ambiente cluster)
it.govpay.gpd.batch.clusterId=[CLUSTER_ID]
# Soglia di inattività in minuti per considerare un job come stale
# Un job che non viene aggiornato (LAST_UPDATED) da più di questo tempo viene considerato bloccato
it.govpay.gpd.batch.stale-threshold-minutes=[MINUTI SOGLIA INATTIVITA]
# Policy reinvio per il codice di errore 403
it.govpay.gpd.batch.policy.reinvio.403.enabled=[true|false]
```
### Proprietà GDE (Giornale degli Eventi)
```properties
# -------------- GDE ----------------
# Abilita il servizio GDE
it.govpay.gde.enabled=[true|false]
# Base URL del servizio GDE
it.govpay.gde.client.baseUrl=[BASE URL SERVIZIO GDE]
```
## Licenza
Questo progetto è rilasciato sotto licenza GPL-3.0. Vedere il file [LICENSE](LICENSE) per i dettagli.
## Supporto
- **Issues**: https://github.com/link-it/govpay-aca-batch/issues
- **GovPay**: https://github.com/link-it/govpay
- **Documentazione pagoPA**: https://docs.pagopa.it/