Enkelt forklart fungerer meldingskøen på denne måten:
- Endringer kommer inn i FS-basen fra ulike kilder
- Triggere er installert på de tabellene i FS der man lytter på endringer
- Endringsmelding konstrueres og sendes til meldingskø
- Eksterne klienter lytter på kø og henter data fra FS-API basert på melding
Endringsmelding
Meldinger fra FS til meldingskøen er på følgende form:
{ "sub":"{ressurs}/{id}", "{ressurs}_id":"{id}", "iss":"FS-{miljø}", "iat":"1539075071295", "operation":"create", "jti":"71373065-040c-43e0-8208-bb2bb0de6cbb" }
Kort om innholdet i meldingen (ref.):
- sub: Subject claim (her: individkall på ressurs)
- ID for ressursen (ID for eiende ressurs hvis det er snakk om en subressurs)
- iss: Issuer claim (her: FS-miljø - demo / prod)
- iat: Issued at (tidsstempel, Unix Epoch Time)
- operation (create / update / delete)
- jti: JWT ID claim (generert GUID)
Meldingsexchange
Meldingskøene (Rabbit MQ) kjører pr. i dag for UiO på USIT, samt under IntArk for andre institusjoner:
- UiO:
- URL: mq-prod01.uio.no
- Port: 5671
- Virtual Host: /no/uio/fs
- Exchange: ex_fs_messages
- IntArk:
- URL: mq-{inst}.intark.uh-it.no
- Port: 5671
- Virtual Host: Foreløbig ikke standardisert
- Exchange: Foreløbig ikke standardisert
En routing key blir sendt med på formen (eksempel):
no.{inst}.fs.FS-{miljø}.{ressurs}.{operation}
(Der {inst} er domene for institusjon)
Integrasjonspunkter
Det må settes opp to integrasjonspunkter i WS Tjeneste/WS Auth:
- Tjenestekode MQ med URL til meldingskøen, med typisk mønster for RabbitMQ:
- URL: amqps:{URL} port:5671 vh:{Virtual Host} ex:{Exchange}
- Brukernavn: Ikke standardisert, men ofte "fsws"
- Passord
- Tjenestekode WSINTERN med URL til FS-API i aktuelt FS-miljø:
- URL: https://fsapi-test.uio.no eller https://api.fellesstudentsystem.no
Status
Foreløpig er dette i produksjon for UiO, og i test for de andre store universitetene.
Meldinger er implementert for mange ressurser, men ikke alle.
Teknisk info
Hvis det er satt opp MQ-integrasjoner (se over), skjer følgende:
- Triggere på de underliggende tabellene i FS kaller PK_MQ.P_LagMelding (i db)
- PK_MQ.P_LagMelding lager en melding i FS_SYSTEM.MQ_BUFFER
- Jobben FSAPI_MQ_SEND (i fs-api-db) sjekker bufferet jevnlig (pr. i dag hvert 5. minutt), dvs. den løper igjennom bufferet og gjør følgende:
- Informasjonen i bufferet mappes til meldingsformatet
- Meldingen sendes til meldingskø av PK_FSWS_MQ.F_SendMessage (i fsws-db)
- PK_FSWS_MQ.F_SendMessage kaller WebserviceKall.sendMq (i fsws-intern)
Evt. feil som oppstår i denne prosessen logges i varselloggen.
Objekter det sendes meldinger fra
Vi implementerer MQ-triggerfunksjonalitet for alle tabeller ved behov.
Oversikt over tabeller, triggertyper og meldinger så langt (det kommer fler):
Ressurs | Tabell | Ins | Upd | Del | Status |
---|---|---|---|---|---|
campuser | Campus | C | U | D | Ferdig |
fag | Fag | C | U | D | Ferdig |
kvalifikasjonsgrunnlag | KvalGrunnlag | C | U | D | Ferdig |
land | Land | C | U | D | Ferdig |
roller | Rolle | C | U | D | Ferdig |
steder | Sted | C | U | D | Ferdig |
steder | Institusjon | U | U | U | Ferdig |
steder | Fakultet | U | U | U | Ferdig |
studienivaer | Studieniva | C | U | D | Ferdig |
personer | Person | C | U | D | Ferdig |
personer | Student | U | U | U | Ferdig |
personer | Fagperson | U | U | U | Ferdig |
personer | PersonTelefon | U | U | U | Ferdig |
personer | PersonBilde | U | U | U | Ferdig |
personroller | PersonRolle | C | U | D | Ferdig |
semesterregistreringer | Registerkort | C | U | D | Ferdig |
semesterregistreringer | Studentkort | U | U | U | Ferdig |
deltakere | Deltaker | C | U | D | Ferdig |
deltakere | DeltakerTelefon | U | U | U | Ferdig |
fnrEndringer | Fnr_Endring | C | U | D | Ferdig |
studieprogrammer | Studieprogram | C | U | D | Ferdig |
kull | Kull | C | U | D | Ferdig |
studieretter | StudieprogramStudent | C | U | D | Ferdig |
emner | Emne | C | U | D | Ferdig |
undervisning | Undervisningsenhet | C | U | D | Ferdig |
undervisningsaktiviteter | UndAktivitet | C | U | D | Ferdig |
studentundervisning | Undervisningsmelding | C | U | D | Ferdig |
studentunderv.aktiviteter | Student_Pa_Und.parti | U | U | U | Ferdig |
studentunderv.aktiviteter | Aktivitet_Onske | U | U | U | Ferdig |
evukurs | EtterUtdKurs | C | U | D | Ferdig |
evukursdeltakere | KursDeltakelse | C | U | D | Ferdig |
kommisjoner | Kommisjon | C | U | D | Ferdig |
vurderingstider | Vurderingstid | C | U | D | Ferdig |
vurderingskombinasjoner | Vurderingskombinasjon | C | U | D | Ferdig |
vurderingsenheter | VurdKombEnhet | C | U | D | Ferdig |
studentvurderinger | StudentVurdKombProtokoll | C | U | D | Ferdig |
studentvurderinger | VurdKombMelding | C | U | D | Ferdig |