+-----------------------+
| NATS/STAN |
| |
marshal | +-------------+ |
+----------------------------------------->+ Topic Queue | |
Command | | +------+------+ |
+ | | | |
| | | +-+-+ |
|(1) |(3.1) | | | |
| | +-----------------------+
v | | |
+--+--+ | | |
+---------+ Do +----------------------------------------------+ | |
| +--+--+ | Command Bus A | | |
| | | +---+ (4)| |(4)+
| | (2) +---+---+ (3.2) +----------------+ | B | | |
| +-------->+ Guard +-------->+ Undoable Stack | | | | |
| +-+-+-+-+ +----------------+ | | | |
| | | | | | | |
| (3)' | | | | | | |
| X<------+ | | (5)' +--------------+ | | | |
| | | X<------+ Local Filter +<----------------+ |
| | | +-------+------+ | | unmarshal |
| | |(3.3) | | <-----------+
| | | |(5) | |
| | +--------------------+ | |
| | | | |
| | v | |
| | +---+---+ | |
| |(3.3)' | Queue | | |
| +-------+ | +---+---+ | |
| | Store | | | | |
| +---+---+ | |(6) | |
| ^ +----------------------+ | |
| |(8.1) | | |
| | v | |
| (9) +----+----+ (7) +------+------+ | |
| +----->+ Handler +<-------------------+ I/C Filters | | |
| | +--+---+--+ +------+------+ | |
| | | | | | |
| | | | (8.2)* (7)' | | |
| | (8.3)*| +-------------+ X<------+ | |
| | | Event | | |
| | v v | |
| | +-----+----+ +-----+-----+ | |
| +---+ Delegate | | Event Bus | | |
| +----------+ +-----------+ | |
| | |
+---+----------------------------------------------------------+ |
| |
+--------------------------------------------------------------+
+-----------------------+
| NATS/STAN |
| |
marshal | +-------------+ |
+----------------------------------------->+ Topic Queue | |
| | +------+------+ |
+ | | | |
| | | +-+-+ |
|(1) |(2.1) | | | |
| | +-----------------------+
v | | |
+---+---+ | | |
+----+ Undo +---------------------------------------------+ | |
| +-+-+-+-+ | Command Bus A | | |
| | | | | | +---+ (3)| |(3)+
| | | | +---------+ | B | | |
| | | | (2.2) +----------------+ | | | |
| | | +------------------------>+ Redoable Stack | | | | |
| | | +----------------+ | | | |
| | | | | | |
| | | | | | |
| | |(2.3) (4)' +--------------+ | | | |
| | | X<------+ Local Filter +<----------------+ |
| | | +-------+------+ | | unmarshal |
| | | | | <-----------+
| | | |(4) | |
| | +------------------------------------+ | |
| | | | |
| +-----+ | | |
| | | | |
| |(2.3)' | | |
| | | | |
| v v | |
| +-------+------+ (5) +---+---+ | |
| | Undo Handler +<--------------------+ Queue | | |
| +-------+------+ +-------+ | |
| | | |
| | | |
| | | |
| |(6)* | |
| | | |
| | +-----------+ | |
| +------------------------->+ Event Bus | | |
| Event +-----------+ | |
| | |
+---+------------------------------------------------------+ |
| |
+----------------------------------------------------------+
+-----------------------------------------------+
| NSQ |
| (1) +-------------+ |
+-------------------->+ Topic Queue | |
| +------+------+ |
| | |
| +------------+------------+ |
| | | |
| (2)| |(2+) |
| v v |
| +-----+-----+ +-----+-----+ |
| | Channel A +----+ +----+ Channel B + |
| +-----------+ | | +-----------+ |
| | | |
| (3)| |(3+) |
| | | |
+-----------------------------------------------+
| |
v v