Back to top

Worker

Worker to proces wykonujący konkretne zadanie – zadania definiowane są w wyspecjalizowanych klasach dziedziczących po klasie abstrakcyjnej Worker. Aktualnie zdefiniowany został tylko jeden rodzaj procesu typu Worker – Worker_SMTP.

Klasa abstrakcyjna Worker

Definicja elementów wspólnych dla wszystkich typów (klas) pochodnych. Ponieważ aktualnie jest tylko jeden typ pochodny – klasa Worker_SMTP, dlatego też obecny zestaw metod „wspólnych” jest dość umowny i może zmieniać się mocno w przyszłości.

Klasa Modelu

Komunikacja Worker → Server odbywa się z wykorzystaniem protokołu SOAP. Klasa modelu przekłada wywołania komunikatów przekazywanych przez proces Robotnika (Worker) w kierunku do Serwera oraz zwraca odpowiedzi Serwera procesowi Robotnika. Cała obsługa komunikacji realizowana jest wewnątrz tej klasy - czyli w przypadku chęci wymiany protokołu SOAP na RESTAPI, JSON czy bezpośrednie odwołania do bazy, programista powinien jedynie dostarczyć klasę modelu realizującą taką komunikację (oczywiście w przypadku RESTAPI czy innych protokołów typu klient-serwer należy jeszcze zadbać o obsługę takiego rodzaju komunikacji po stronie serwera).

Worker_SMTP

Definiuje proces sprawdzenia danego zakresu adresów ip pod kątem dostępności, w tym zakresie, serwerów SMTP. Proces nie próbuje wysłać wiadomości mailowych! Sprawdzenie polega na próbie nawiązania połączenia na porcie 25 (aktualnie tylko ten port) i, w przypadku pomyślnego ustanowienia połączenia, wysłanie komend „helo” i „ehlo”, oraz zapisaniu odpowiedzi serwera na te komendy (wraz z początkowym komunikatem identyfikującym serwer) w bazie danych. Następnie proces rozłącza połączenie i próbuje połączyć się z kolejnym adresem z zadanego zakresu, aż do wyczerpania adresów. Po wyczerpani puli adresów proces (wątek) kończy działanie, działanie wątku powinno również zostać przerwane w przypadku wystąpienia jakiś błędów (przy czym brak możliwości nawiązania połączenia z danym adresem ip na porcie 25 nie jest uważany za błąd!) - w sytuacji błędu, proces po prostu kończy działanie zwalniając zasoby, co ma umożliwić Managerowi (Worker_Manager) na rozpoczęcie kolejnego procesu w miejsce procesu zakończonego (poprawnie, bądź zakończonego błędem).

Worker Manager

Procesy Robotników (Worker) są uruchamiane w osobnych wątkach – proces „Worker Manager” zajmuje się kontrolowaniem ilości uruchomionych wątków i w razie potrzeby uruchamianiem kolejnych, tak aby ilość równolegle pracujących Robotników była zgodna z ustawioną dla danego hosta wartością w bazie danych.

Watchdog

Wotchdog jest procesem przeznaczonym do uruchamiania z menadżera zadań Cron – sprawdza czy w systemie jest uruchomiony proces Menadźera (Worker Manager) i uruchamia go w razie potrzeby.