Ordonnancement des données
Avec les flux de données des périphériques sur le terrain, les événements et les abonnements sont en place pour la logique applicative, le traitement des données, et ainsi de suite. Les données traitées via un abonnement sont ingérées dans la base de données prise en charge. Le traitement des données dans ThingWorx s'exécute en parallèle pour prendre en charge de nombreux objets et valeurs de propriété associées.
Alors que les flux de données sont transférés vers ThingWorx et sont traités via des événements et des abonnements, des données ordonnées sont attendues pour le traitement séquentiel des événements sur les propriétés. Les données traitées doivent également être ingérées dans un ordre séquentiel dans la base de données.
Enoncé du problème
Si l'ordre des données n'est pas respecté, cela a un impact sur la génération d'événements, les abonnements et, en fin de compte, l'ingestion de données. Ce scénario est observé lors des déconnexions et reconnexions de Kepware, dans une configuration haute disponibilité (en présence d'un serveur de connexion pour équilibrer les connexions WebSocket).
Solution
Dans ThingWorx 9.6, les modifications suivantes sont introduites :
1. Pour le serveur de connexion, l'adhérence est conservée pour un objet spécifique à la paire d'ID ThingWorx et d'ID canal WebSocket (WS). Cela garantit que les mises à jour des valeurs de propriété d'un objet donné sont toujours envoyées vers des canaux WebSocket et ThingWorx spécifiques.
2. L'eMessage Connector (eMC) utilise en interne le serveur de connexion pour communiquer avec ThingWorx Platform. Les modifications apportées au serveur de connexion permettent à l'eMessage Connector (eMC) d'envoyer les données ordonnées à ThingWorx.
3. Dans ThingWorx Platform, l'acteur Akka est implémenté au niveau de chaque objet. Avec chaque valeur de propriété entrante d'un objet, un acteur est créé et la valeur de la propriété est transférée à la boîte de réception de l'acteur. L'acteur Akka extrait ensuite les messages de la file d'attente et les traite de manière séquentielle, garantissant un traitement de données ordonnées côté plateforme.
4. Un nouveau marqueur est exposé pour activer l'ordonnancement des données dans la propriété BasicSettings du fichier platform-settings.json.
Paramètre
Type
Valeur
Valeur par défaut
EnableDataOrdering
BOOLEAN
vrai OU faux
faux
* 
L'ordre des événements est une fonctionnalité disponible dans la version 9.5. Pour activer cette définition d'abonnement, cliquez sur Execute Events Sequentially.
Impact des autres composants
Le SDK C et Java peuvent envoyer des valeurs de propriété à ThingWorx avec les API suivantes :
VirtualThing.setProperty()
VirtualThing.updateSubscribedProperties();
A l'aide des API précédentes, les propriétés sont envoyées dans l'ordre à ThingWorx Platform.
Pour obtenir l'ordonnancement des données, si un serveur de connexion se trouve derrière l'équilibreur de charge, modifiez la configuration de l'équilibreur de façon qu'elle présente une adhérence. Sans ces données, l'ordonnancement ne peut être réalisé.
Est-ce que cela a été utile ?