Définition du modèle ThingWorx dans Composer > Système > Sous-systèmes > Sous-système de gestion des transferts de fichiers
Sous-système de gestion des transferts de fichiers
Le sous-système de gestion des transferts de fichiers fournit les méthodes requises pour gérer les transferts de fichiers entre les objets distants, les référentiels de fichiers et les serveurs fédérés.
Sauf indication contraire, les transferts de fichiers entre un client Edge et ThingWorx Platform nécessitent que le client soit connecté du début à la fin du transfert. Dans ThingWorx Platform, des transferts de fichiers peuvent être lancés lorsque le client Edge est déconnecté. Il suffit pour cela d'indiquer à ThingWorx Platform d'effectuer la copie à l'aide de la fonctionnalité de mise en file d'attente. Les transferts des fichiers pouvant être mis en file d'attente sont placés dans une file d'attente hors ligne et sont effectués une fois l'agent connecté.
* 
Si vous utilisez PostgreSQL en tant que fournisseur de persistance, la file d'attente hors ligne est rendue persistante pour prendre en charge le basculement pour la haute disponibilité dans ThingWorx.
Une fois le transfert lancé, le client Edge ne doit pas se déconnecter, auquel cas le transfert échouera. Les transferts de fichiers mis en file d'attente expireront s'ils ne sont pas lancés avant que la valeur spécifiée pour Durée de vie (sec) du transfert des fichiers dans une file d'attente ne soit atteinte.
En général, les transferts de fichiers sont contrôlés par ThingWorx Platform. Toutefois, des transferts de fichiers peuvent être contrôlés par Edge. Pour les activer, il suffit d'ajouter la forme d'objet EdgeControlled à l'objet distant qui participe au transfert de fichiers. Pour les transferts de fichiers contrôlés par Edge, la source ou la destination doit être définie en tant qu'objet FileRepository sur ThingWorx Platform. Un transfert de ce type est contrôlé par le client Edge. L'Edge appelle le service Touch pour mettre à jour l'horodatage du transfert de fichiers à mesure que celui-ci progresse. Dans le cas contraire, le transfert de fichiers expire dans ThingWorx Platform. L'Edge indique si le transfert a réussi ou s'est achevé avec une erreur.
Vous pouvez intégrer des informations contextuelles en fournissant le paramètre metadata lors de l'initialisation du transfert de fichiers. Ce champ est un objet JSON, qui peut contenir n'importe quel code JSON arbitraire. Avec certaines fonctionnalités de base, ThingWorx Platform utilisera ce champ pour fournir des instructions supplémentaires au client Edge. Pour ces transferts, les informations du champ metadata ne doivent être modifiées par aucun processus autre que ThingWorx Platform.
Transfert de fichiers entre des serveurs fédérés
Pour transférer des fichiers entre des serveurs fédérés, procédez comme suit :
* 
La barre oblique (/) est le séparateur de chemin recommandé pour les référentiels de fichiers.
1. Configurez une fédération entre ThingWorx ServerA et ThingWorx ServerB. Pour plus d'informations, consultez la rubrique Configuration d'une fédération.
2. Ajoutez ThingA à ServerA à l'aide du modèle d'objet FileRepository.
a. Cochez la case Publié pour ThingA afin de rendre cet objet accessible à d'autres serveurs ThingWorx.
3. Ajoutez RemoteThingA à ServerB à l'aide du modèle d'objet RemoteThingWithFileTransfer.
a. Dans le champ Identificateur, saisissez ThingA@ServerA.
4. Copiez votre fichier (par exemple, test.txt) dans le dossier racine SystemRepository de ServerB.
5. Ouvrez FileTransferSubsystem sur ServerB, puis exécutez le service copy avec les valeurs de paramètre suivantes :
sourceRepo : SystemRepository
sourcePath : /
sourceFile : test.txt
targetRepo : RemoteThingA
targetPath : /
targetFile : test.txt
Ne modifiez pas les valeurs par défaut des autres paramètres.
6. Accédez au dossier /ThingworxStorage/repository/ThingA sur ServerA, puis vérifiez que le fichier test.txt a été copié.
Configuration
Paramètres de transfert de fichiers
Type de données
Par défaut
Remarques
Nbre min. de threads alloués au pool de transfert de fichiers
NUMBER
10
Définit la taille du pool de base pour ThreadPoolExecutor. Ce pool de threads est utilisé pour coordonner la logique de transfert de fichiers contrôlée par la plateforme.
Nbre max. de threads alloués au pool de transfert de fichiers
NUMBER
10
Définit la taille maximale du pool de threads pour ThreadPoolExecutor.
Des transferts de fichiers asynchrones risquent d'être perdus si ThingWorx rencontre une erreur. Prenons par exemple le cas de 50 longs transferts de fichiers tandis que la valeur par défaut de ce paramètre est fixée à 10. Si ThingWorx échoue, 40 fichiers seront perdus.
Nombre max. d'entrées dans la file d'attente avant l'ajout d'un nouveau thread de travail
NUMBER
100
Définit la limite supérieure du nombre d'entrées de la file d'attente utilisées dans ThreadPoolExecutor.
Cela limite le nombre de transferts actifs autorisés à la fois.
Délai d'inactivité du thread (sec)
NUMBER
600000
Définit la durée de vie des threads inactifs dans ThreadPoolExecutor. Le pool interrompt les threads et revient à la taille des pools de base après le temps spécifié.
Délai d'inactivité du transfert de fichiers (sec)
NUMBER
30
Entre chaque étape du processus de transfert de fichiers (checksum, ReadFromBinaryFile, WriteToBinaryFile, validation), le délai d'inactivité est vérifié. Si l'étape prend plus de temps que le délai d'inactivité défini, le transfert est annulé.
* 
N'utilisez pas ce paramètre pour des copies asynchrones.
Taille max. d'un bloc de transfert de fichiers (octets)
NUMBER
128000
Définit le nombre d'octets requis pour les opérations ReadFromBinaryFile et WriteToBinaryFile. Cela représente la taille des fragments de chaque écriture.
Cette variable impose une taille de bloc maximale pendant un transfert de fichiers au niveau système.
La configuration EMS prévaut en permanence. Cependant, si EMS est configuré avec une taille de buffer_size supérieure à celle définie pour cette variable, cette dernière limite cette taille de bloc. Si des tailles de bloc supérieures (128 Ko) sont configurées via EMS, cette valeur doit être augmentée. Le niveau de compilation maximal est de 1 Mo.
Taille max. du transfert de fichiers (octets)
NUMBER
100000000
Définit le nombre maximal d'octets qu'une opération de copie prend en charge.
Si la taille du fichier source est supérieure à cette valeur, le transfert échouera et un message d'erreur s'affichera.
Nbre max. de transferts de fichiers autorisés dans la file d'attente hors ligne
NUMBER
50000
Définit le nombre maximal de transferts de fichiers en file d'attente hors ligne autorisés dans le système.
Nbre max. de transferts de fichiers autorisés par objet dans la file d'attente hors ligne
NUMBER
10
Définit le nombre maximal de transferts de fichiers en file d'attente hors ligne autorisés par objet.
Durée de vie (sec) du transfert des fichiers dans une file d'attente
NUMBER
86400
Définit la durée maximale pendant laquelle un transfert de fichiers en attente peut rester dans la file d'attente hors ligne.
Un transfert de fichiers est supprimé de la file d'attente hors ligne lorsque le délai spécifié est dépassé.
Nbre max. de transferts de fichiers contrôlés par Edge autorisés
NUMBER
500
Définit le nombre maximal de transferts de fichiers actifs contrôlés par Edge autorisés sur le système.
Nombre total de transferts contrôlés par Edge simultanés sur la plateforme. Ce paramètre est différent du nombre maximal de transferts actifs en permanence autorisés, qui sont contrôlés par le paramètre Nombre max. d'entrées dans la file d'attente avant l'ajout d'un nouveau thread de travail.
La limite supérieure de cette propriété est contrôlée par MaxConcurrentFileTransfersEdgeCtrl dans le fichier platform-settings.json. La valeur par défaut est 1000.
Nbre max. de transferts de fichiers contrôlés par Edge autorisés par objet
NUMBER
2
Définit le nombre maximal de transferts simultanés autorisés vers ou depuis un objet contrôlé par Edge. Par exemple, pour une valeur de 2, un objet contrôlé par Edge ne peut avoir que deux transferts actifs (chargement ou téléchargement) en même temps. Les requêtes suivantes de retrait des transferts de fichiers de la file d'attente sont rejetées jusqu'à ce que la capacité le permette.
Délai d'inactivité pour les transferts de fichiers contrôlés par Edge (sec)
NUMBER
600
Définit le délai maximal pendant lequel une tâche peut demeurer active lorsqu'elle ne fait l'objet d'aucune action (par exemple, transfert de données ou mise à jour de l'état de la tâche). La plage est comprise entre 1 et 3 600 secondes. Ce paramètre est similaire au délai d'inactivité appliqué aux tâches de transfert actives en permanence. Le délai défini est cependant généralement plus long pour pouvoir prendre en compte le cycle de ping des périphériques de scrutation.
File Transfer Cleanup Frequency (sec)
NUMBER
10
Définit la fréquence de la tâche de nettoyage pour l'évaluation des opérations de transfert de fichiers.
La tâche de nettoyage supprime les tâches obsolètes et arrivées à expiration de la table des tâches actives. Cette action libère les emplacements de transfert de fichiers, ce qui facilite les autres opérations mises en file d'attente. Les valeurs minimale et maximale recommandées doivent être comprises respectivement entre 1 seconde et 60 secondes.
La valeur de ce paramètre doit être définie judicieusement. La valeur par défaut, 10 sec, devrait fonctionner dans la plupart des cas d'utilisation.
Avec une valeur très faible, la tâche d'arrière-plan démarrera trop fréquemment. Elle récupérera toutes les tâches de transfert de fichiers actives depuis le cache et évaluera leur expiration. Cela ajoutera des calculs inutiles et une charge superflue sur les caches.
Avec une valeur très élevée, cette tâche démarrera moins fréquemment et des transferts de fichiers contenant la réservation valide pourraient se retrouver bloqués et ne pas libérer la réservation en temps opportun. Cela peut avoir un impact sur l'ensemble des opérations de transfert de fichiers s'il existe de nombreuses opérations bloquées : réseau instable, périphérique qui ne se connecte pas, etc.
Est-ce que cela a été utile ?