Queue Component

StyleCI github

Het Queue Component bevat een lijst van later uit te voeren taken, dat wil zeggen in dit component kunnen taken worden aangemaakt die door andere componenten op een later tijdstip moeten worden uitgevoerd. Dit lijkt op het versturen van notificaties met een paar afwijkingen:


  1. De notificatie gaat altijd terug naar de indienende applicatie

  2. De notificatie wordt op een later moment verzonden

  3. De notificatie bevat een unieke id waarop de kan worden overschreven


Deze logica wordt gebruik om cronjobs en analyseren van de database te voorkomen, voorbeeld: stel en gebruiker plaatst een bestelling en heeft de mogelijkheid om later te betalen, maar doet de gebruiker dit niet, dan wordt de bestelling na 30 dagen geannuleerd. Als we dit willen oplossen met een cronjob zouden we iedere dag een data bevraging moeten doen van alle bestellingen die aan de criteria voldoen en deze annuleren.

Dat heeft een aantal nadelen

  • We moeten altijd een hele database analyseren, ook al hebben we maar één order nodig

  • We zijn op de dag nauwkeurig ipv van op de minuut (en als we op de minuut nauwkeurig zouden willen zijn, moeten we iedere minuut de hele database bevragen)

  • Een toename van business logica, voorwaarde en gevolgen (willen we bijvoorbeeld 5 dagen van te voren een herinneringsmail sturen?) leidt tot een scherpe toename van database bevragingen

Om dit te voorkomen willen we graag een gerichte vraag stellen die één keer na 30 dagen afgaat, deze vraag kunnen we aanmaken als de order wordt geplaatst. Omdat in de tussentijd containers kunnen wisselen, en we centraal beheer willen kunnen doen op deze wachtrij brengen we de vragen gebundeld onder in een apart component. Dit is het Queue Component.

Uitgangspunt hierbij is dat de queue andere component gericht notificeert (met de informatie waarmee specifiek kan worden gehandeld, bijvoorbeeld een order id), maar dat de afhandelende applicatie zelf controleert of de handeling nog nodig is als onderdeel van de uitvoering (oftewel is de order nog wel onbetaald).

Op deze manier blijft de wachtrij verschoont van business logica, gecombineerd met het Processen Component (PC) biedt het echter de optie om microservices en BPMN processen in de wachtrij te zetten, waarbij het natuurlijk technisch mogelijk is om de uitvoering met 0 minuten te vertragen. Het maakt het mogelijk om processen asynchroon uit te voeren.





Bekijk repository bekijk documentatie

Conduction blauw past bij jou!

Ook werken of stage bij Conduction?

Wij zijn altijd op zoek naar gedreven, originele vakfanaten, pioniers en creatievelingen (to be). Voel je je aangesproken? Neem vooral contact met ons op! :)