{"id":39733098,"url":"https://github.com/link-it/govpay-aca-batch","last_synced_at":"2026-01-22T17:36:53.771Z","repository":{"id":228817080,"uuid":"751809016","full_name":"link-it/govpay-aca-batch","owner":"link-it","description":"Batch di alimentazione dell'ACA degli Avvisi pagoPA","archived":false,"fork":false,"pushed_at":"2025-12-20T08:19:13.000Z","size":437,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-12-22T14:46:24.144Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/link-it.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-02T11:25:49.000Z","updated_at":"2025-12-12T15:09:02.000Z","dependencies_parsed_at":"2025-11-29T19:05:50.965Z","dependency_job_id":null,"html_url":"https://github.com/link-it/govpay-aca-batch","commit_stats":null,"previous_names":["link-it/govpay-aca-batch"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/link-it/govpay-aca-batch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-aca-batch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-aca-batch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-aca-batch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-aca-batch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/link-it","download_url":"https://codeload.github.com/link-it/govpay-aca-batch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/link-it%2Fgovpay-aca-batch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28535156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T10:13:46.436Z","status":"ssl_error","status_checked_at":"2026-01-18T10:13:11.045Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-18T11:02:13.119Z","updated_at":"2026-01-18T11:02:13.178Z","avatar_url":"https://github.com/link-it.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://www.link.it/wp-content/uploads/2025/01/logo-govpay.svg\" alt=\"GovPay Logo\" width=\"200\"/\u003e\n\u003c/p\u003e\n\n# GovPay - Porta di accesso al sistema pagoPA - ACA Batch\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=link-it_govpay-aca-batch\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=link-it_govpay-aca-batch)\n[![Docker Hub](https://img.shields.io/docker/v/linkitaly/govpay-aca-batch?label=Docker%20Hub\u0026sort=semver)](https://hub.docker.com/r/linkitaly/govpay-aca-batch)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://raw.githubusercontent.com/link-it/govpay-aca-batch/main/LICENSE)\n[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.8-brightgreen.svg)](https://spring.io/projects/spring-boot)\n\n## Sommario\n\nBatch Spring Boot per l'alimentazione dell'Archivio Centralizzato Avvisi pagoPA.\n\n## Requisiti\n\n- JDK 21\n- Maven 3.8+\n- Database supportati: PostgreSQL, MySQL/MariaDB, Oracle\n\n## Compilazione\n\nIl progetto utilizza librerie Spring Boot versione 3.5.x e JDK 21.\n\nPer la compilazione eseguire il seguente comando, verranno eseguiti anche i test:\n\n```bash\nmvn clean install -P [jar|war]\n```\n\nIl profilo permette di selezionare il packaging dei progetti (jar o war).\n\n## Esecuzione\n\n### 1. Modalità Standalone\n\nPer l'avvio dell'applicativo come standalone con scheduler interno:\n\n```bash\nmvn spring-boot:run\n```\n\nPer sovrascrivere le proprietà definite nel file `application.properties`:\n\n```bash\nmvn spring-boot:run -Dspring-boot.run.jvmArguments=\"-Dspring.datasource.url=[NUOVO_VALORE] ...\"\n```\n\n### 2. Modalità Cron\n\nAvvio dell'applicazione per essere utilizzata all'interno di un cron esterno. Il batch viene eseguito una volta e l'applicazione termina:\n\n```bash\njava -Dspring.profiles.active=cron -jar target/govpay-aca-batch.jar \\\n  --spring.batch.job.enabled=false \\\n  --spring.main.web-application-type=\"none\" \\\n  --spring.datasource.url=\"[URL CONNESSIONE DB]\" \\\n  --spring.datasource.driverClassName=\"[CLASSE DRIVER JDBC]\" \\\n  --spring.datasource.username=\"[USERNAME DB]\" \\\n  --spring.datasource.password=\"[PASSWORD DB]\" \\\n  --spring.jpa.database-platform=\"[DIALECT JPA]\" \\\n  --spring.jpa.properties.hibernate.dialect=\"[DIALECT JPA]\" \\\n  --it.govpay.gpd.time-zone=\"Europe/Rome\" \\\n  --it.govpay.gpd.batch.client.header.subscriptionKey.name=\"Ocp-Apim-Subscription-Key\" \\\n  --it.govpay.gpd.batch.client.header.subscriptionKey.value=\"[VALORE SUBSCRIPTION-KEY]\" \\\n  --it.govpay.gpd.batch.client.debugging=[true|false] \\\n  --it.govpay.gpd.batch.client.baseUrl=\"[BASE URL SERVIZIO GPD PAGOPA]\" \\\n  --it.govpay.gpd.batch.jobs.gpdSenderJob.steps.spedizionePendenzaStep.chunk-size=10 \\\n  --it.govpay.gpd.batch.dbreader.sogliaTemporaleRicercaPendenze.numeroGiorni=7 \\\n  --it.govpay.gpd.batch.clusterId=[CLUSTER_ID] \\\n  --it.govpay.gpd.batch.stale-threshold-minutes=120 \\\n  --it.govpay.gpd.batch.policy.reinvio.403.enabled=[true|false] \\\n  --it.govpay.gde.enabled=[true|false] \\\n  --it.govpay.gde.client.baseUrl=[BASE URL SERVIZIO GDE]\n```\n\nEsempio di configurazione crontab per esecuzione ogni 10 minuti:\n\n```cron\n*/10 * * * * /usr/bin/java -Dspring.profiles.active=cron -jar /opt/govpay-aca-batch/govpay-aca-batch.jar [OPZIONI...]\n```\n\n### 3. Docker\n\nL'immagine Docker è disponibile su Docker Hub:\n\n```bash\ndocker pull linkitaly/govpay-aca-batch:latest\n```\n\n#### Esempio con Docker Run (esecuzione singola)\n\n```bash\ndocker run --rm \\\n  -e GOVPAY_DB_TYPE=[postgresql|mysql|mariadb|oracle] \\\n  -e GOVPAY_DB_SERVER=[HOST:PORTA] \\\n  -e GOVPAY_DB_NAME=[NOME DATABASE] \\\n  -e GOVPAY_DB_USER=[USERNAME DB] \\\n  -e GOVPAY_DB_PASSWORD=[PASSWORD DB] \\\n  -e GOVPAY_ACA_GPD_ENV=[prod|uat] \\\n  -e GOVPAY_ACA_GPD_SUBSCRIPTIONKEY=[VALORE SUBSCRIPTION-KEY] \\\n  linkitaly/govpay-aca-batch:latest\n```\n\n#### Esempio con Docker Compose (modalità cron interno)\n\n```yaml\nversion: '3.8'\nservices:\n  govpay-aca:\n    image: linkitaly/govpay-aca-batch:latest\n    environment:\n      # Database\n      GOVPAY_DB_TYPE: [postgresql|mysql|mariadb|oracle]\n      GOVPAY_DB_SERVER: [HOST:PORTA]\n      GOVPAY_DB_NAME: [NOME DATABASE]\n      GOVPAY_DB_USER: [USERNAME DB]\n      GOVPAY_DB_PASSWORD: [PASSWORD DB]\n      # GPD pagoPA\n      GOVPAY_ACA_GPD_ENV: [prod|uat]\n      GOVPAY_ACA_GPD_SUBSCRIPTIONKEY: [VALORE SUBSCRIPTION-KEY]\n      # Modalità cron interno\n      GOVPAY_ACA_BATCH_USA_CRON: \"true\"\n      GOVPAY_ACA_BATCH_INTERVALLO_CRON: 5  # minuti\n    ports:\n      - \"10001:10001\"  # Actuator health check\n```\n\n#### Esempio Kubernetes CronJob\n\n```yaml\napiVersion: batch/v1\nkind: CronJob\nmetadata:\n  name: govpay-aca-batch\nspec:\n  schedule: \"*/10 * * * *\"  # Ogni 10 minuti\n  jobTemplate:\n    spec:\n      template:\n        spec:\n          containers:\n          - name: govpay-aca\n            image: linkitaly/govpay-aca-batch:latest\n            envFrom:\n            - configMapRef:\n                name: govpay-aca-config\n            - secretRef:\n                name: govpay-aca-secrets\n          restartPolicy: OnFailure\n```\n\nPer la documentazione completa sulla configurazione Docker, consultare [docker/DOCKER.md](docker/DOCKER.md).\n\n## Configurazione\n\nAll'interno del file `application.properties` sono definite le seguenti proprietà:\n\n### Proprietà Server\n\n```properties\n# ----------- SPRING SERVLET ------------\n\nserver.port=[PORTA SERVIZIO STANDALONE]\n\n# Abilitazione Endpoint /actuator/health/liveness\nmanagement.endpoints.web.base-path=[BASEPATH SERVIZI STATO APPLICAZIONE]\n```\n\n### Proprietà Database\n\n```properties\n# ------------ HIBERNATE \u0026 JPA -------------------\n\n# Configurazione DB\n#spring.datasource.jndiName=[JNDI NAME DEL DATASOURCE]\nspring.datasource.url=[URL CONNESSIONE DB]\nspring.datasource.driverClassName=[CLASSE DRIVER JDBC]\nspring.datasource.username=[USERNAME DB]\nspring.datasource.password=[PASSWORD DB]\n\nspring.jpa.database-platform=[DIALECT JPA]\nspring.jpa.properties.hibernate.dialect=[DIALECT JPA]\n\nspring.jpa.hibernate.ddl-auto=[COMPORTAMENTO HIBERNATE GENERAZIONE SCHEMA]\n```\n\n### Proprietà GPD pagoPA\n\n```properties\n# -------------- GPD PAGOPA ----------------\n\n# Informazioni per la connessione verso PagoPA\nit.govpay.gpd.batch.client.header.subscriptionKey.name=[NOME HEADER SUBSCRIPTION-KEY]\nit.govpay.gpd.batch.client.header.subscriptionKey.value=[VALORE SUBSCRIPTION-KEY]\nit.govpay.gpd.batch.client.debugging=[true|false]\nit.govpay.gpd.batch.client.baseUrl=[BASE URL SERVIZIO GPD PAGOPA]\n```\n\n**URL ambienti pagoPA:**\n\n| Ambiente | URL |\n|----------|-----|\n| Produzione | `https://api.platform.pagopa.it/aca/debt-positions-service/v1/` |\n| UAT/Collaudo | `https://api.uat.platform.pagopa.it/aca/debt-positions-service/v1/` |\n\n### Proprietà Batch\n\n```properties\n# -------------- BATCH ----------------\n\n# TimeZone applicazione\nit.govpay.gpd.time-zone=Europe/Rome\n\n# Dimensione del chunk di lavoro\nit.govpay.gpd.batch.jobs.gpdSenderJob.steps.spedizionePendenzaStep.chunk-size=[DIMENSIONE CHUNK]\n\n# Numero di giorni su cui limitare la ricerca delle pendenze da spedire al ACA\nit.govpay.gpd.batch.dbreader.sogliaTemporaleRicercaPendenze.numeroGiorni=[LIMITE TEMPORALE RICERCA PENDENZE]\n\n# Cluster ID (identificativo del nodo in ambiente cluster)\nit.govpay.gpd.batch.clusterId=[CLUSTER_ID]\n\n# Soglia di inattività in minuti per considerare un job come stale\n# Un job che non viene aggiornato (LAST_UPDATED) da più di questo tempo viene considerato bloccato\nit.govpay.gpd.batch.stale-threshold-minutes=[MINUTI SOGLIA INATTIVITA]\n\n# Policy reinvio per il codice di errore 403\nit.govpay.gpd.batch.policy.reinvio.403.enabled=[true|false]\n```\n\n### Proprietà GDE (Giornale degli Eventi)\n\n```properties\n# -------------- GDE ----------------\n\n# Abilita il servizio GDE\nit.govpay.gde.enabled=[true|false]\n\n# Base URL del servizio GDE\nit.govpay.gde.client.baseUrl=[BASE URL SERVIZIO GDE]\n```\n\n## Licenza\n\nQuesto progetto è rilasciato sotto licenza GPL-3.0. Vedere il file [LICENSE](LICENSE) per i dettagli.\n\n## Supporto\n\n- **Issues**: https://github.com/link-it/govpay-aca-batch/issues\n- **GovPay**: https://github.com/link-it/govpay\n- **Documentazione pagoPA**: https://docs.pagopa.it/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flink-it%2Fgovpay-aca-batch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flink-it%2Fgovpay-aca-batch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flink-it%2Fgovpay-aca-batch/lists"}