J'essaie de décoder les enregistrements de données binaires Marc21 qui ont la spécification suivante concernant le champ qui fournit la longueur de l'enregistrement.Décodeur binaire Marc21 avec Akka-Stream
Un nombre de cinq caractères généré par ordinateur égal à la longueur de l'enregistrement complet , y compris lui-même et la terminaison d'enregistrement. Le numéro est justifié à droite et les positions inutilisées contiennent des zéros.
Je suis en train d'utiliser
Akka flux Framing.lengthField, mais je ne sais pas comment spécifier la taille de ce champ. J'imagine qu'un personnage est 8 bits, peut-être 16 pour un nombre, je ne suis pas sûr, je me demande si cela dépend de la plate-forme ou de la langue. En bref, la question est est-il possible de dire quelle est la taille de ce champ Sachant que je suis en Scala/Java.
Aussi Que signifie:
Le nombre est droit et les positions inutilisées contiennent des zéros »
Est-ce que a une incidence sur la façon dont on lit la valeur si elles sont recueillies correctement
? Si quelqu'un sait quelque chose à ce sujet, s'il vous plaît partager
EDIT1
Contexte:
Je suis en train de construire un graphe de traitement de flux où la première étape serait en train de traiter le résultat d'une commande sys a couru sur un serveur symphonique (système de fournisseur de catalogage), qui est un flux de chunck octets non structuré qui dans l'ensemble représentent tous les enregistrements Marc21 demandés (vidage complet ou vidage partiel). Par traitement, je veux dire, découper ce flux non structuré d'octets en un flux de trames où les trames sont les enregistrements. En d'autres termes, en préparant les octets pour un enregistrement à la fois, et en l'émettant individuellement à l'étape suivante.
La prochaine étape consistera à émettre cet enregistrement (Bytes) à Apache Kafka.
Évidemment, l'étage d'émission serait complètement parallélisé pour accélérer le processus.
Le serveur Symphony n'a pas la capacité de diffuser un cliché sur demande, en particulier sur le réseau. Par conséquent, ce traitement graphique basé sur Akka-stream pour effectuer ce travail, pour l'ingestion rapide/production et le traitement global de streaming de nos décharges dans notre infrastructure de données rapide globale.
EDIT2
D'après les commentaires de @badcook, je me demande si ComputeFramesize pourrait être utilisé ici. Pas sûr que je suis légèrement confus par la fonction et que faut-il en paramètres.
Une petite précision serait grandement appréciée.
À l'avenir, je recommanderais de diviser ce genre de questions en deux et en incluant toutes les informations disponibles. La question de votre flux Akka sur 'Framing' est complètement différente de votre question (implicite) sur les spécifications MARC et appartient donc à deux questions distinctes. Vous n'avez pas mentionné MARC du tout, même si c'est une partie cruciale (sinon * cruciale) de votre question. (Je vais retirer mon vote si vous au moins décrire et inclure MARC dans votre question et titre) – badcook