레코드의 길이를 제공하는 필드와 관련하여 다음과 같은 스펙을 가진 Marc21 바이너리 데이터 레코드를 디코딩하려고합니다.Marc21 Akka-Stream 이진 디코더
A 컴퓨터 자체로 생성 된 5 자의 숫자는 전체 레코드의 길이와 같습니다 (자체 및 레코드 터미네이터 포함). 숫자 은 오른쪽 정렬되며 사용되지 않는 위치에는 0이 포함됩니다.
나는 그러나 난 그냥 그 필드의 크기를 지정하는 방법을 모른다,
Akka 스트림 Framing.lengthField를 사용하는 것을 시도하고있다. 나는 캐릭터가 8 비트, 아마 16을위한 숫자일지도 모른다고 상상한다. 플랫폼이나 언어에 의존하는지 궁금하다. 간단히 말해서, 문제는 Scala/Java에 있다는 것을 알고있는 필드의 크기가 무엇인지 말할 수 있습니다.
또한 무엇을합니까 수단 : 숫자는 오른쪽 정렬하고 사용되지 않는 위치가
제대로 수집하는 경우 하나의 값을 읽는 방법에 대한 의미를 가지고합니까
"0을 포함하고있다
누구든지이 사실을 알고 있다면 공유하십시오.
EDIT1
상황 :
내가 구조화되지 않은 바이트 chunck의 스트림 첫 번째 단계는 교향곡 (공급 업체 카탈로그 시스템) 서버에 대해 달린 sys 명령의 결과를 처리 할 것입니다 스트림 처리 그래프를 구축을 위해 노력하고있다 전체적으로 요청 된 모든 Marc21 레코드를 나타냅니다 (전체 덤프 또는 부분 덤프).
처리한다는 것은 프레임의 스트림이 레코드 인 비정형 스트림의 스트림을 청크로 처리하는 것을 의미합니다.
즉, 한 레코드의 바이트를 준비하고 다음 스테이지로 개별적으로 방출합니다.
다음 단계는 그 레코드 (바이트)를 아파치 카프카에게 방출하는 것으로 구성됩니다.
분명히 배출 단계는 프로세스를 가속화하기 위해 완전히 병렬 처리됩니다.
Symphony 서버에는 특히 네트워크를 통해 요청시 덤프를 스트리밍 할 수있는 기능이 없습니다. 따라서이 Akka 스트림 기반의 Graph Processing은 빠른 데이터 수집에서 우리의 덤프를 신속하게 처리/생산하고 전반적인 스트리밍 처리를 수행하기 위해이 작업을 수행합니다. ComputeFramesize 여기에 사용될 수있는 경우 @badcook 입력을 기반으로
EDIT2
, 나는 궁금하다. 내가 함수에 약간 혼란스럽고 매개 변수에 무엇이 들어 있는지 확신하지 못합니다.약간의 설명이 크게 감사하겠습니다.
미래에는 이러한 종류의 질문을 2 개로 나누고 모든 정보를 포함하는 것이 좋습니다. Akka의 'Framing'에 관한 질문은 MARC 사양에 대한 (묵시적인) 질문과 완전히 다르므로 두 가지 별도의 질문에 속합니다. 또한 MARC는 질문의 중요한 부분이 아니더라도 MARC를 전혀 언급하지 않았습니다. (당신이 적어도 당신의 질문과 제목에 MARC를 기술하고 포함한다면 나의 투표를 제거 할 것입니다.) – badcook