SIVI-chunking uitgelegd
Sommige berichten, vooral Bericht 3 (Pensioenprojectie), kunnen groot worden. De standaard laat een verzender daarom een groot bericht opknippen in kleinere deelberichten, chunks genoemd.
Wanneer opknippen
Wanneer een bericht groter is dan de omvang die met de ontvanger is afgesproken. De standaard gaat uit van 4 MB; de werkelijke limiet spreken de partijen onderling af, en veel partijen kiezen een hogere limiet, zoals 10 MB. Bericht 3 (Pensioenprojectie) is vaak 10–15 MB en kan veel groter zijn, dus chunking hoort bij de normale gang van zaken. De standaard kent geen maximumaantal chunks. Feedbackberichten worden nooit opgeknipt.
De regels
- Elke chunk is een volledig bericht. Elke chunk bevat de volledige blokken
commonTechnicalencommonFunctionalen is op zichzelf geldig tegen het schema. - Alle chunks delen één messageId, de identificatie van het logische bericht als geheel. Dit is het enige geval waarin berichten een messageId delen.
- Elke chunk heeft een
chunking-blok metcurrentChunkId,chunkSequenceNumber,totalNumberOfChunksenchunkFragmentPaths. Als het blok aanwezig is, zijn al deze velden verplicht. chunkFragmentPathszijn JMESPath-expressies die de ontvanger vertellen welke delen van het bericht de chunk bevat.
Samenvoegen
De ontvanger verzamelt de chunks op messageId, gebruikt chunk 1 als sjabloon, plaatst de fragmenten uit de andere chunks en beschouwt het bericht als compleet zodra totalNumberOfChunks chunks zijn ontvangen. Chunks mogen in willekeurige volgorde binnenkomen.
Als er iets misgaat
Eén mislukte of ontbrekende chunk maakt het hele logische bericht ongeldig. De verzender moet het volledige bericht opnieuw aanleveren, met een nieuwe messageId en een nieuwe set chunks. “Stuur chunk 73 opnieuw” bestaat niet.
Uw eigen systemen hebben mogelijk kleinere delen nodig
Chunking gaat over de uitwisseling tussen partijen. Binnen uw organisatie kunnen systemen strengere limieten hebben (sommige kernsystemen accepteren maar ongeveer 2 MB). Dat is een aparte stap: knip het ontvangen bericht op in delen die elk systeem kan verwerken, langs zakelijke grenzen, met controletotalen en een manifest, zodat er niets zoekraakt. Anders dan bij SIVI-chunks kan een mislukt intern deel afzonderlijk opnieuw worden verstuurd.
Praktische tips
- Meet de omvang op de werkelijk verzonden bytes, inclusief headers, en spreek af of “4 MB” 4.000.000 bytes of 4 MiB betekent, gecomprimeerd of niet.
- Knip op langs de herhalende lijsten (bijvoorbeeld cohorten en hun betalingen). Als één ondeelbaar item op zichzelf al groter is dan de limiet, stop dan met een duidelijke foutmelding in plaats van een ongeldig bericht te maken.
- Spreek met elke ketenpartner af hoe fragmentpaden worden geschreven en hoe lang op ontbrekende chunks wordt gewacht.
Gebaseerd op de VB-PUO-handleiding §2 en §7.6. Bron: SIVI – VB-PUO Standaard.