Správca Jaskyne Stalaktit si povedal, že nebude realizovať pevné časy vstupov a nechá to na automatické spracovanie.

Návštevníci prichádzajú k jaskyni priebežne celý čas počas vstupných hodín 10:00-15:00. Jaskyňa má 3 sprievodcov. Každý z nich môže zobrať do jaskyne skupinu od 10 do 20 hostí (menšie ani väčšie skupiny nie sú povolené). Prehliadka trvá 30 minút. Rozostup medzi skupinami je aspoň 10 minút. Každý sprievodca si po prehliadke potrebuje aspoň 15 minút oddýchnuť. Pre testovacie účely budeme predpokladať, že jedna sekunda v simulácii fungovania jaskyne bude predstavovať 5 minút reálneho času.

Minimálne požiadavky:
Generátor udalostí 1: Každú sekundu simulácie(5 minút) príde k jaskyni náhodne od nula do 5 návštevníkov.
Generátor udalostí 2: Každú sekundu simulácie(5 minút) ak je nejaký pripravený sprievodca a môže vojsť do jaskyne(je oddýchnutý, predošlá skupina vošla pred aspoň 10 minútami a má aspoň 10 čakajúcich návštevníkov) zoberie čo najväčšiu skupinu do 20 ľudí na prehliadku.
Generátor udalostí 3 (správca jaskyne): Každú celú hodinu od 11:00 do 16:00 sa vypisuje tabuľka s počtom čakajúcich návštevníkov pred jaskyňou, výpisom veľkosti skupín so sprievodcom, ktorí sú aktuálne v jaskyni a celkovým počtom návštevníkov, ktorí za poslednú hodinu vyšli z jaskyne.

Systém by mohol podporovať nasledovné služby (zlepšenie známky):
  1. Na záver vypíšte, koľko minút si odpracoval každý sprievodca.
  2. Generátor udalostí 1 sa dá nahradiť Generátorom záznamu. Generátor záznamu zopakuje presne rovnaké časy a počty hostí ako naposledy vyrobil generátor udalostí 1
  3. Využite Generátor záznamu na zhodnotenie o koľko viac/menej návštevníkov by jaskyňa zvládla keby mala 2 alebo 4 sprievodcov.
  4. Využite Generátor záznamu na zhodnotenie o koľko viac/menej návštevníkov by jaskyňa zvládla, keby robila vstupy vždy každú pol hodinu s maximálnym počtom 20 návštevníkov (minimum je 1 návštevník).
Technické požiadavky
  • Vyberte si jeden broker — buď RabbitMQ alebo Kafka.
  • Implementáciu databázy návštevníkov, prehliadok a aktivít sprievodcov zvoľte podľa vlastného uváženia. Nezabúdajte na to, že ku databáze budú pristupovať viacerí klienti naraz. Nemusí to byť relačná databáza, pokojne aj nejaká/é zdieľaná/é pamäťová/é štruktúra/y.
  • Jednotlivé výpisy do konzoly môžu robiť ako producenti, tak aj konzumenti dát, je to na vás. Výpisy nemusia smerovať do rovnakej konzoly.
  • Ak máte potrebu môžete si vyrobiť aj 4. generátor udalostí – hodiny.