Reactor programtervezési minta
A Reactor tervezési minta olyan eredmény kezelési minta, mely kezeli a szolgáltatáskezelőnek egy vagy több input által egymással egyidejűleg küldött szolgáltatási kéréseket. A szolgáltatáskezelő ekkor visszafejti a bejövő kéréseket és párhuzamosan továbbítja azokat a megfelelő kéréskezelőknek.

Felépítés
 Források (resources): bármely forrás, mely a rendszer számára inputot képes előállítani vagy a rendszerből képes outputot előállítani.
 Párhuzamos Esemény Visszafejtő (synchrous event demultiplexer): Esemény loop-ot használ, mellyel blokkolja a forrásokat. Amikor lehetőség van blokkolás nélküli forrással párhuzamos tevékenységet végezni, elküldi a forrást a Továbbítónak.
 Továbbító (dispatcher): Kéréskezelők regisztrálása és deregisztrálása. A Visszafejtőtől továbbítja a forrásokat a megfelelő Kéréskezelőnek.
 Kéréskezelő (request handler): Az alkalmazás által meghatározott kéréskezelő és a hozzá tartozó források.

Tulajdonságok
Definíció szerint minden Reaktor rendszer egyszálú, de lézethet többszálú rendszerben is.

Előnyök
A Reactor tervezési minta teljes mértékben elszigeteli az alkalmazás-specifikus kódot a Reactor implementációjától, ami azt jelenti, hogy az alkalmazás összetevőit moduláris, újrahasznosítható részekre oszthatjuk. Továbbá, a kéréskezelők párhuzamos hívásának köszönhetően, a Reactor minta úgy teszi lehetővé az egyszerű konkurenciát, hogy közben nem teszi több szálas bonyolultságúvá a rendszert

Korlátok
A fordított irányú vezérlésnek köszönhetően a Reactor mintát nehezebb debuggolni, mint egy procedurális mintát. Továbbá, az által, hogy párhuzamosan hívja a kéréskezelőket, a reaktor minta korlátozza a maximális konkurenciát, különösen a szimmetrikus többprocesszoros gépeken. A reaktor minta skálázhatóságát korlátozza, hogy a kéréskezelőket párhuzamosan hívja, illetve korlátozza a visszafejtő is.

Kapcsolódó szócikkek 
Proactor programtervezési minta

Jegyzetek

Források
 Douglas Schmidt: Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects. Volume 2. Wiley, 2000.
 Douglas C. Schmidt: An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events
 Reactor pattern

További idegen nyelvű irodalom
 An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events by Douglas C. Schmidt
 APR Networking & the Reactor Pattern
 Architecture of a Highly Scalable NIO-Based Server
 Akka's I/O Layer Architecture

Programtervezési minták
A Reactor tervezési minta olyan eredmény kezelési minta , mely kezeli a szolgáltatáskezelőnek egy vagy több input által egymással egyidejűleg küldött szolgáltatási kéréseket . A szolgáltatáskezelő ekkor visszafejti a bejövő kéréseket és párhuzamosan továbbítja azokat a megfelelő kéréskezelőknek . Felépítés Források ( resources ) : bármely forrás , mely a rendszer számára inputot képes előállítani vagy a rendszerből képes outputot előállítani . Párhuzamos Esemény Visszafejtő ( synchrous event demultiplexer ) : Esemény loop-ot használ , mellyel blokkolja a forrásokat . Amikor lehetőség van blokkolás nélküli forrással párhuzamos tevékenységet végezni , elküldi a forrást a Továbbítónak . Továbbító ( dispatcher ) : Kéréskezelők regisztrálása és deregisztrálása . A Visszafejtőtől továbbítja a forrásokat a megfelelő Kéréskezelőnek . Kéréskezelő ( request handler ) : Az alkalmazás által meghatározott kéréskezelő és a hozzá tartozó források . Tulajdonságok Definíció szerint minden Reaktor rendszer egyszálú , de lézethet többszálú rendszerben is . Előnyök A Reactor tervezési minta teljes mértékben elszigeteli az alkalmazás-specifikus kódot a Reactor implementációjától , ami azt jelenti , hogy az alkalmazás összetevőit moduláris , újrahasznosítható részekre oszthatjuk . Továbbá , a kéréskezelők párhuzamos hívásának köszönhetően , a Reactor minta úgy teszi lehetővé az egyszerű konkurenciát , hogy közben nem teszi több szálas bonyolultságúvá a rendszert Korlátok A fordított irányú vezérlésnek köszönhetően a Reactor mintát nehezebb debuggolni , mint egy procedurális mintát . Továbbá , az által , hogy párhuzamosan hívja a kéréskezelőket , a reaktor minta korlátozza a maximális konkurenciát , különösen a szimmetrikus többprocesszoros gépeken . A reaktor minta skálázhatóságát korlátozza , hogy a kéréskezelőket párhuzamosan hívja , illetve korlátozza a visszafejtő is . Kapcsolódó szócikkek Proactor programtervezési minta Jegyzetek Források Douglas Schmidt : Pattern-Oriented Software Architecture Volume Patterns for Concurrent and Networked Objects . Volume Wiley , Douglas C. Schmidt : An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events Reactor pattern További idegen nyelvű irodalom An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events by Douglas C. Schmidt APR Networking & the Reactor Pattern Architecture of a Highly Scalable NIO-Based Server Akka's I/O Layer Architecture Programtervezési minták