User-MQTT Connector
User MQTT est destiné à l’inter-connexion de la plateforme de donnée Centiloc avec un système de donnée client.
Une fois la communication mise en place, vous pourrez consommer tous les messages qualifiés générés par les équipements Centiloc. Ainsi, vous pourrez mettre à jour vos vos systèmes de données, de localisation et de status des différents objets qui composent votre base.
Ici, vous trouverez quelques recommandations pour maximiser la qualité de cette connexion.
Une fois connecté au MQTT, vous allez commencer à recevoir des évènements. Mais, qu’en est-il de la situation initiale préalable à ces évènements?
Pour assurer que votre système de donnée est à jour, nous vous conseillons de récolter le contenu de vos plateaux, juste après avec établi la connexion au User-MQTT. Vous pourrez utiliser l’attribut momentum des schémas de donnée pour comparer les évènements reçus en concurrence de cet inventaire initial pour accepter ou rejeter les premiers messages reçus.
Pour diverses raisons, la connexion au User-MQTT peut être interrompue. Assurez vous que votre connexion permette une reconnexion automatique.
Pendant la perte de connexion, vous pouvez aussi avoir perdu quelques évènements. Ainsi, nous vous encourageons à faire confiance au point de départ.
Le broker MQTT peut stocker les données que votre client aurait manquées sur une période. La configuration actuelle permet de stocker les messages oubliés pendant 2 heures.
Pour bénéficier de cette option, vous devrez configurer
CleanSession
àfalse
et réutiliser le mêmeclientID
.⚠️ Cependant, cette configuration contient un inconvénient majeur: si vous faites tourner vos clients (
clientID
différents, notamment en cas de scale-down), le broker MQTT conservera 2h de messages qu’il ne transmettra pas, attendant la reconnexion du client disparu
ClientID
: doit être unique en cours d’utilisation. You devez préfixer ce champ avec votretenantID
.CleanSession
: ce champ indique au broker MQTT de conserver de la donnée en cas de déconnexion (valeur àfalse
). Nous conservons de la donnée pendant 2h. Mais en cas de rotation des clients, si ce champ est àfalse
, la donnée destinée à ce client ne sera pas redistribuée à d’autres clients d’un même groupe de subscription
Le broker User MQTT supporte les shared subscription. Ainsi vous pouvez connecter plusieurs instances clientes qui partage la même souscription, répartissant ainsi la charge des évènements reçus.
Attention, chaque client doit pourtant avec unclientID
unique, et les sessions sont gérées par client. Ainsi, un client qui auraitcleanSession
àfalse
, à la déconnexion, se verrait réservé les prochains messages qui lui sont dûs pendant 2 heures.
Pour utiliser cette fonctionnalité, vous devez souscrire à $share/<GROUPID>/topic
, avec <GROUPID>
qui définit le nom de l’abonnement groupé.
Ces noms de groupes doivent être uniques, aussi prefixez-les par tenantID
.
Les messages sont produits avec 2 encodages:
- protobuf with transtreamdatamodel package sur le topic
centiloc/<tenantID>
. - JSON sur le topic
centiloc/{tenantID}/json/item/v1/update
.
Si l’occasion se présente pour une version majeure du protobuf
transtreamdatamodel
, nous modifierons le topic de génération pour s’approcher de la convention introduite par l’arrivé du format JSON:centiloc/{tenantID}/proto/item/vX/update
Evidemment, nous maintiendrons la compatibilité avec les versions antérieures sur les topics actuels.