Implementiamo step-by-step
Dopo aver stilato i requisiti minimi per la nostra applicazione e fatta la necessaria progettazione della soluzione, siamo nelle condizioni di poter procedere con la realizzazione vera e propria, cercando di seguire step-by-step i vari stadi riassunti a seguire.
-
Creazione del progetto Quarkus
-
Realizzazione del Resource Endpoint (servizio Rest)
-
Realizzazione del filtro JAX-RS
-
Definizione degli indirizzi virtuali dell’Event Bus
-
Registrazione dei Consumer per gli eventi dell’Event Bus
-
Adeguamento del filtro JAX-RS per inviare l’evento/messaggio sull’Event Bus
-
Realizzazione del Dispatcher e degli Event Handler
Prima d’iniziare con qualunque attività d’implementazione, è necessario che i requisiti indicati nella tabella a seguire come non opzionali siano soddisfatti. In tabella non sono indicati il terminale (o console del sistema operativo) e l’IDE di cui avete ampia libertà di scelta.
| Nome | Opzionale | Descrizione |
|---|---|---|
Java JDK 17/21 |
NO |
Implementazione di OpenJDK 17/21. È possibile usare qualunque delle implementazioni disponibili. Per questo articolo è stata usata la versione 21 di OpenJDK e l’implementazione di Amazon Corretto 21.0.2. |
Git |
NO |
Tool di versioning. |
Maven 3.9.6 |
NO |
Tool di build per i progetti Java e di conseguenza Quarkus. |
Quarkus 3.9.2 |
NO |
Framework Quarkus 3.9.2 la cui release note è disponibile qui https://quarkus.io/blog/quarkus-3-9-2-released/. Per maggiori informazioni per le release LTS fare riferimento all’articolo Long-Term Support (LTS) for Quarkus. |
Quarkus CLI |
SI |
Tool a linea di comando che consente di creare progetti, gestire estensioni ed eseguire attività essenziali di creazione e sviluppo. Per ulteriori informazioni su come installare e utilizzare la CLI (Command Line Interface) di Quarkus, consulta la guida della CLI di Quarkus. |
Docker v26 o Podman v4/5 |
NO |
Tool per la gestione delle immagini e l’esecuzione dell’applicazione in modalità container. La gestione delle immagini/container sarà necessaria nel momento in cui saranno sviluppati gli Event Handler che dovranno comunicare con i servizi esterni all’applicazione (vedi NoSQL, SQL, AMQP). La gestione delle immagini necessarie e container, sarà totalmente trasparente per noi sviluppatori in quanto a carico dei Dev Services di Quarkus. |
GraalVM |
SI |
Per la build dell’applicazione in modalità nativa. Per maggiori informazioni fare riferimento alla documentazione Building a Native Executable. |
Ambiente di sviluppo C |
SI |
Richiesto da GraalVM per la build dell’applicazione nativa. Per maggiori informazioni fare riferimento alla documentazione Building a Native Executable. |
cURL 7.x/8.x |
SI |
Tool per il test dei Resource Endpoint (servizi REST) |
Tabella 2 - Requisiti (anche opzionali) necessari per l’implementazione del progetto Quarkus
L’intero progetto a cui ho dato il nome Event Bus Logging filter JAX-RS è disponibile su GitHub e può essere clonato o scaricato per essere esaminato e testato. Inoltre, il progetto è stato realizzato usando la CLI di Quarkus e Maven, quindi è possibile eseguire il progetto in modalità sviluppo, testarlo e, se necessario, eseguire la build in modalità nativa. All’interno del progetto è presente un file README_it.md che contiene tutte le informazioni necessarie per la compilazione, l’esecuzione e il test del progetto.
|
Nota: Nel caso in cui abbiate Podman al posto di Docker, potreste incontrare in fase di build, test e avvio dell’applicazione l’errore: Could not find a valid Docker environment. Per risolvere il problema fare riferimento al README.md del progetto e in particolare la sezione Qualche nota sulla configurazione di Podman. |
Per ogni step di realizzazione del progetto (precedentemente indicato) esiste il relativo tag, così che sia possibile seguire passo-passo l’evoluzione del progetto. Per esempio, nel caso in cui volessimo visionare il progetto al termine del primo step, sarà possibile eseguire il comando git checkout step-1, e così via per gli altri step. Quando inizieremo ogni step di realizzazione del progetto, sarà indicato il tag di riferimento.