Module 7: Messaging Flashcards
Wat is asynchroniteit?
Asynchroniteit of asynchroon wil zeggen dat berichten worden gestuurd zonder te wachten op reactie.
Waarom asynchronous messaging gebruiken?
- loose coupling
- schaalbaarheid
- responsiviteit
Wat is het Fire & Forget model?
Met deze pattern stuurt de Sender berichten naar de queue van de message broker, die op hun beurt door de receiver worden opgehaald. Hiervan is geen terugkoppeling naar de Sender; deze weet alleen van de broker of er iets verstuurd is.
Wat is het Request / Reply model?
Het Request / Reply pattern heeft twee queues; een voor het sturen van requests en een voor het sturen van replies. Op deze manier is er terugkoppeling naar de requester over het verzonden bericht.
Daarnaast is het ook mogelijk dat een bericht als invalide wordt beschouwd, wanneer er iets fout gaat, deze naar een eigen queue te sturen, zodat er foutafhandeling kan plaatsvinden.
Wat is het Publish / Subscribe model?
De Publisher zet een bericht op een Topic waar meerdere onderdelen belang bij kunnen hebben, zoals hieronder bij bijvoorbeeld een adreswijziging. Meerdere Subscribers kunnen luisteren naar een bepaald topic waarop het bericht binnenkomt, waardoor het zich als een soort event gedraagt.
In welke categorieën zijn message/bericht typen te verdelen?
- Command: Een actie die uitgevoerd dient te worden (met eventueel enkele argumenten).
- Document: Data die ontvangen dient te worden en hierop te acteren.
- Event: Er gebeurde iets waarnaar geluisterd kan worden.
Wat zijn twee type bericht/message inhoud?
- By Reference
- By Value
Wat is data by reference?
Data by reference houd in dat het bericht die de ontvanger krijgt alleen een referentie (identifier) bevat, die de ontvanger dan zelf moet ophalen.
Wat is het voordeel van data by reference?
Het bericht is compacter en kleiner omdat het niet alle data bevat.
Wat is het nadeel van data by reference?
- Het ontvangende systeem moet de data zelf ophalen
- De data die opgehaald moet wordt kan inmiddels verouderd zijn
Wat is data by value?
Data by value zijn messages/berichten die de volledige data als inhoud hebben.
Wat is het voordeel van data by value?
Dit heeft als voordeel dat altijd de actuele data gebruikt wordt die hiervoor bedoeld is. Ook verhoogd dit de leesbaarheid en de navolgbaarheid.
Wat is het nadeel van data by value?
Een groot nadeel is dat de upgradability minder is; wanneer er een nieuw veld bij komt, moeten er meer aanpassingen plaatsvinden, omdat er meer systemen de juiste berichten moeten kunnen verzenden of ontvangen.
Daarnaast is het bericht groter.
Wat is JMS?
Java Message Service (JMS) is een asynchrone messaging service specificatie die een API definieert gebaseerd op Loose Coupling en Guaranteed Delivery.
Hoe werkt een JMS?
Er wordt een bericht gemaakt door de Producer die naar de JMS provider wordt gestuurd. Dit kan op een Queue of een Topic zijn, afhankelijk van het gebruikte pattern.
Bij welk model hoort een Queue?
Fire & Forget en Request / Reply
Bij welk model hoort een topic?
Publisher / Subscriber
Kan de Producer zowel synchroon als asynchroon zijn?
Nee. De producer is altijd synchroon. Dit wil zeggen dat het bericht altijd verstuurd moet zijn, maar nog niet verwerkt hoeft te worden.
Kan de Consumer zowel synchroon als asynchroon zijn?
Ja.
Vaak is het laatstgenoemde het meest verstandig, omdat je jouw applicatie meestal niet wil laten wachten tot er een bericht komt. Wanneer er nooit antwoord komt, blijft de thread die het bericht wil ontvangen bezet. Een oplossing hiervoor zou zijn om een tijdslimiet in te stellen op het wachten.
Hoe ziet de JMS specificatie er uit?
De ConnectionFactory bestaat om een Connection op te zetten, die op zijn beurt Sessions kan maken. Binnen een Session wordt het beheer over de communicatie op zich genomen. Deze kan een Message, Producer en Consumer genereren.