Condividi tramite


Filtro dei messaggi indirizzati MQTT

È possibile usare la funzionalità di filtro della sottoscrizione di Griglia di eventi per filtrare i messaggi MQTT indirizzati.

Filtro degli argomenti

È possibile filtrare gli argomenti MQTT dei messaggi filtrando la proprietà "oggetto" nello schema degli eventi cloud. Le sottoscrizioni di Griglia di eventi supportano il filtro soggetto semplice gratuito specificando un valore iniziale o finale per l'oggetto. ad esempio:

  • Se ogni veicolo pubblica la propria posizione sul proprio argomento (veicoli/veicolo1/gps, veicoli/veicolo2/gps e così via), è possibile utilizzare il filtro: il soggetto termina con "gps" per instradare solo tutti i messaggi di posizione.
  • Se i computer di ogni sezione di ogni factory pubblicano argomenti che simulano la gerarchia di factory (ad esempio, factory1/area2/machine4/telemetry), è possibile usare il filtro: l'oggetto inizia con "factory1/area2/" per instradare solo i messaggi che appartengono a factory1 e area 2 a un endpoint specifico. È possibile replicare questa configurazione per instradare i messaggi da altre factory/aree a endpoint diversi.

È anche possibile sfruttare i vantaggi del filtro avanzato della sottoscrizione di eventi per filtrare in base all'argomento MQTT tramite il filtro sulla proprietà dell'oggetto nello schema di eventi cloud. I filtri avanzati consentono di impostare filtri più complessi specificando un operatore di confronto, una chiave e un valore.

Filtro del payload

Per i messaggi MQTT v5 di tipo di contenuto= "application/json; charset=utf-8" o di un indicatore di formato di payload=1, il payload verrà inoltrato nell'oggetto dati e il messaggio verrà serializzato come JSON (o una stringa JSON se il payload non è un JSON). L'impostazione del tipo di contenuto e/o dell'indicatore del formato del payload consente di filtrare le proprietà del payload così come vengono inoltrate all'interno del campo dati così come è.

payload JSON

Se si invia un payload JSON, verrà serializzato come JSON appropriato e sarà possibile filtrare in base a ogni proprietà nel codice JSON, usando il filtro avanzato della sottoscrizione di eventi.

Ad esempio: se si invia il payload seguente:

{
	"Temp": 70,
	"humidity": 40
}

È possibile usare il filtro seguente per filtrare tutti i messaggi con un valore di temperatura superiore a 100:

"advancedFilters": [{
    "operatorType": "NumberGreaterThan",
    "key": "data.Temp",
    "value": 100
}]

Payload non JSON

Se si invia un payload non JSON ancora UFT-8, verrà serializzato come stringa JSON. Ad esempio, se si invia il payload seguente:

{
	Hello Contoso.
}

È possibile usare il filtro seguente per filtrare tutti i messaggi che includono la parola "Contoso":

"advancedFilters": [{
    "operatorType": "StringContains",
    "key": "data",
    "value": "Contoso"
}]

Filtro di arricchimento

Gli arricchimenti vengono aggiunti agli attributi di CloudEvent indirizzati ed è possibile filtrarli usando il filtro avanzato della sottoscrizione di eventi.

Ad esempio, se è stato aggiunto l'arricchimento seguente:

{
	"key": "clienttype",
	"value": "${client.attributes.type}"
}

È possibile usare il filtro seguente per filtrare tutti i messaggi provenienti dai client di tipo "sensor":

"advancedFilters": [{"
    operatorType": "StringContains",
    "key": "clienttype", 
    "value": "sensor"
}]

Passaggi successivi:

Per altre informazioni sul routing, vedere gli articoli seguenti:

Avvio rapido:

Concetti: