WSO2 Flashcards
Spiegazione protocollo AMQP
AMQP: Advanced Message Queuing Protocol, è uno standard aperto per il middleware orientato ai messaggi. Definisce un protocollo a livello applicativo per garantire funzionalità di messaggistica, accodamento, routing, affidabilità e sicurezza.
In pratica, AMQP è un protocollo che stabilisce le regole per la comunicazione tra un broker (il server di messaggistica) e i clienti. Utilizza un’unità di base chiamata “frame” per trasmettere i messaggi tra i partecipanti. I frame vengono inviati in modo ordinato, garantendo che tutti i frame siano consegnati correttamente prima che il destinatario li riceva.
L’obiettivo principale di AMQP è garantire l’interoperabilità tra diverse implementazioni dei broker e dei clienti di messaggistica. Ciò significa che diverse piattaforme e fornitori possono comunicare utilizzando lo stesso protocollo standard.
Spiegazione protocollo MQTT:
MQTT è un protocollo di messaggistica leggero e efficiente progettato per l’IoT e dispositivi con risorse limitate. Utilizza un modello di pubblicazione/sottoscrizione, consentendo ai dispositivi di pubblicare messaggi su argomenti specifici e ai destinatari di sottoscrivere tali argomenti per ricevere i messaggi corrispondenti. MQTT è efficiente in termini di utilizzo di banda e risorse, rendendolo adatto per dispositivi IoT con limitate capacità di elaborazione e connessione. Supporta diversi livelli di QoS per garantire la consegna dei messaggi, e offre connessioni persistenti per ridurre l’overhead di connessione
MQTT offre tre livelli di QoS per garantire la consegna dei messaggi in base alle esigenze dell’applicazione:
- QoS 0: “Al più una volta” - Il messaggio viene inviato senza garanzia di consegna.
- QoS 1: “Almeno una volta” - Il messaggio viene inviato con garanzia di consegna almeno una volta, ma può essere duplicato.
- QoS 2: “Esattamente una volta” - Il messaggio viene inviato con garanzia di consegna esattamente una volta, eliminando i duplicati.
Cosa è URI Template:
Un URI Template include spesso delle variabili, indicate da placeholder, che possono essere sostituite con valori specifici al momento della creazione dell’URI. L’obiettivo principale di un URI Template è fornire una forma flessibile per definire le risorse e le loro relazioni.
Ad esempio, considera il seguente URI Template: /api/customers/{customerId}. In questo caso, {customerId} è una variabile nel modello, che può essere sostituita con un valore specifico al momento della creazione dell’URI. Ad esempio, /api/customers/123 o /api/customers/456.
Cosa è URL Mapping:
Si riferisce al processo di associare un URL specifico a una risorsa o a un endpoint nel sistema. In WSO2, URL Mapping viene utilizzato per definire le regole di corrispondenza tra gli URL delle richieste HTTP e i servizi o le risorse specifiche che devono gestire tali richieste.
Per esempio, supponiamo di avere un servizio WSO2 che gestisce le richieste relative ai clienti, e vogliamo associare l’URL /customers/* a tale servizio. In questo caso, stiamo definendo una regola di URL Mapping che afferma che tutte le richieste con URL che iniziano con /customers/ devono essere gestite dal servizio dei clienti.
Variabili nell’URI
Per accedere alle variabili nell’URI, è necessario utilizzare il prefisso “$ctx” seguito da “uri.var” e il nome della variabile desiderata.
Ad esempio, se hai un parametro nell’URI chiamato “appointment_id”,
l’espressione corrispondente sarà “$ctx:uri.var.appointment_id”
Proprietà del contesto
Il contesto in WSO2 contiene informazioni relative alla richiesta in corso. Per accedere alle proprietà del contesto,
puoi utilizzare “$ctx.getProperty” seguito dal nome della proprietà desiderata.
Ad esempio, se hai una proprietà chiamata “property_name”,
l’espressione corrispondente sarà “$ctx.getProperty(‘property_name’)”.
Utilizzo di espressioni JSONPath:
JSONPath è un linguaggio di query per estrarre dati da oggetti JSON.
Per utilizzare JSONPath in WSO2, puoi utilizzare l’espressione “json-eval()” seguita dalla tua espressione JSONPath.
Ad esempio, “json-eval($.path.to.value)” verrà utilizzato per estrarre un valore specifico da un payload JSON.
Template Artifact:
è un tipo di artefatto utilizzato per definire configurazioni riutilizzabili che vengono applicate a diversi componenti del sistema.
I “template artifact” forniscono un modo efficiente per definire configurazioni comuni una volta sola e riutilizzarle in più punti.
Message Processor:
è un componente che consente l’elaborazione e la gestione affidabile dei messaggi in modo asincrono.
Cosa fa il Mediators Enrich?
Questo mediatore viene utilizzato per copiare o trasferire valori tra diversi contesti di messaggi o per modificare il contenuto del messaggio durante l’esecuzione.
ha due azioni principali:
- Copy: Copia il valore di una proprietà, espressione o risorsa esterna in una specifica proprietà del messaggio corrente. Ciò viene realizzato utilizzando l’attributo source per specificare il valore da copiare e l’attributo target per indicare la proprietà del messaggio in cui verrà copiato il valore.
*Replace: Sostituisce il contenuto del messaggio corrente con il valore fornito nella proprietà, espressione o risorsa esterna specificata nell’attributo source.
Questo mediatore è ampiamente utilizzato in WSO2 per eseguire operazioni come:
- Inviare una richiesta a un servizio esterno e arricchire la risposta nel messaggio corrente.
- Estrarre dati da un messaggio e memorizzarli in proprietà per un uso successivo.
- Trasformare o adattare il contenuto di un messaggio prima di inviarlo a un servizio.