ID: S202605071107
Status: school
Tags: avans 2-4, avans 2-4 softwarearchitectuur en kwaliteit vak, rubric

avans 2-4 sakl2 messages and events

Les

Opties voor communiceren tussen openMRS met jouw app:

  • Direct sql queries
  • legacy Rest APi
  • webhook plugin
  • ActiveMQ

in de remindo toets komen alle theoretische concepten die worden behandeld in de SAKL en SDKL lessen: avans 2-4 les overzicht.

Message queues zorgen er voor dat elk bericht op zijn minst 1 keer aankomt, het kan niet garanderen dat het niet vaker dan 1 keer aankomt. Dus dit moet je zelf afhandelen.

We moeten iets van een queue gaan maken. (lees adr4 groetjes chris)

Marc praat over dat we ADR’s moeten schrijven omdat dat bijvoorbeeld beter is als je AI Agents los laat op je code.

RabbitMQ

  • AMQP - Advanced Message Queuing Protocol (vergelijkbaar met HTTP, maar dan voor Queue producers/consumers)
  • Exchange - Wanneer je gebruik wilt maken van publish/subscribe. Ontkoppelt producers en consumer in gedrag. Voor point 2 point gebruik je de default exchange.
  • Routing key - Een label dat de producer op een bericht plakt. De exchange gebruikt dit label om te beslissen naar welke queue het bericht gaat.
  • ACK / NACK - Bevestigt dat een bericht is verwerkt of juist niet?
  • Dead-letter queue - Als een bericht na X pogingen niet verwerkt kan worden, belandt het in de dead-letter queue. Daar kun je het inspecteren, herverwerken of wegooien. Event as first-class citizen

Queue types

met point-2-point gaat het goed als alleen meerdere copieën van de zelde service luisteren, maar als je 2 andere services hebt luisteren heb je last van race conditions als een bericht is ingesteld als maar 1 keer leesbaar per service (dus dat is default functionality). Daarom hebben we een message broken zoals RabbitMQ waarop gesubscribed kan worden op een topic, en dan heb je 1 queue per subscribing services. Het is basically MQTT met een queue om te zorgen dat de messages ook nog blijven bestaan als de listening service uitgevallen is.

Events

Verschillende Event vormen:

  • Systemen die reageren op wat er is gebeurd - niet op wat er gevraagd wordt)
  • Asynchrone communicatie - systemen zijn van elkaar losgekoppeld in tijd en gedrag)
  • Events as first class citizens - events vereisen een expliciete afhandeling en gaan niet zomaar verloren
  • Events representeren concepten uit de echte wereld.

Event-Driven?

De term event komt vaker terug in de wereld van software engineering. Iedere groep pakt één van de concepten en legt uit hoe het zich verhoudt of waar het verschilt van Event-driven architecture.

  • Eventual Consistency
  • Event Sourcing
  • C# Events
  • Event storming

RUBRIC

realisatie verantwoording is iets nieuws in de rubric. (dankje Marc), dit komt voort uit Marc zijn ongemak ofzo. Marc wilt een verantwoording van hoe we als team opschrijven welke AI tools je gebruikt, en hoe je het hebt ingezet. Dit is niet voor een oordeel, maar hoe we reflecteren op de tijdwinst hiervan, reflecteren op de kwaliteit van het product met de AI tool output. En voorbeelden van hoe we het gebruiken. Ben je afhankelijk geworden van AI, kan je nog programmeren als AI wegvalt? Als je ook nog eens een advies formuleert over hoe je dit beter doet, krijg je plus punten.


References

  • dit zijn de slides van de les.