Proseguiamo questa serie di script relativi a Event Grid MQTT per scoprire tutte le possibilità che il servizio ci offre. Abbiamo, visto come creare il servizio e come creare gruppi di client ed infine come dare i permessi, affinché i client possano inviare e ricevere messaggi. Poiché è fondamentale avere un controllo granulare dei topic, affinché i client non possano sottoscrivere o pubblicare messaggi non di loro competenza, è necessario uno strumento che non ci obblighi ad indicare i client uno per uno, ma che ci permetta di definire delle regole applicabili globalmente.
I client group già ci aiutano in questo senso, anche se come visto sono limitati nel numero. Il vero strumento dedicato a questo scopo sono i topic space. Sotto uno di questo possiamo indicare fino a 10 topic template, cioè un'espressione per indicare il topic. Oltre all'utilizzo dei wildcard classici di MQTT, + (più) per indicare un segmento, o # (cancelletto) per indicare tutti i segmenti successivi, possiamo anche utilizzare delle espressioni da risolvere sulla base del client e dei suoi attribuiti. Come visto quindi nei client group per identificare i gruppi, possiamo utilizzare le stesse informazioni per circoscrivere il margine di manovra di un client in pubblicazione e sottoscrizione in base al permission binding che abbiamo dato.
Proviamo quindi a creare un topic space come mostrato nella figura seguente, dove utilizziamo la sintassi ${} per indicare l'espressione.

Come possiamo vedere, creiamo due template. Il primo crea un segmento sulla base dell'attributo type, perciò già questo delimita l'ambito del topic sul quale client può operare. Inoltre, definiamo un topic dove caricare i messaggi dedicato al client stesso. Nella seconda espressione, invece, definiamo un topic comune dove tutti i client di tipo iot possono andare a pubblicare o scrivere. Infine, dobbiamo dare un permission binding di pubblicazione e scrittura su questo topic e sul gruppo di client che vogliamo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare un webhook in Azure DevOps
Ordine e importanza per @layer in CSS
Triggerare una pipeline su un altro repository di Azure DevOps
Estrarre dati randomici da una lista di oggetti in C#
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Gestione degli eventi nei Web component HTML
Cancellare una run di un workflow di GitHub
Recuperare App Service cancellati su Azure
Rendere le variabili read-only in una pipeline di Azure DevOps
Filtrare i dati di una QuickGrid in Blazor con una drop down list
I più letti di oggi
- Restituire un file per il download tramite ASP.NET Web API
- Inviare e-mail gratuitamente con SendGrid e Microsoft Azure
- Modificare un'immagine con il Nokia Imaging SDK in Windows Phone 8
- Implemetare lo swipe all'interno di una ListView nella Universal Windows Platform
- Community Champion Basta!Italia 2009 - Roma
- Web and Cloud Day 2015 Live - Online
- ASP.NET 3.5 Extensions in beta la settimana prossima
- Disponibile la fix GDR del .NET Framework 3.5 SP1
- Rilasciato Silverlight 3.0, Expression Blend 3 e la RC di Sketchflow
- Speciale Silverlight 4.0 RC e per Windows Phone 7 Series