Google mal mit "Queued State machine" oder "QSM" und lies
das hier. QSM ist für meine Begriffe die fortgeschrittenste Architektur überhaupt.
Bei Queues hat man nur einen Empfänger, es kann aber von mehreren Stellen des Programms gesendet werden. Der Empfänger sollte natürlich wissen, woher die Daten jeweils kommen, und außerdem kann das Format der Daten, je nachdem woher es kommt, unterschiedlich sein. Die Lösung dafür ist: Die Queue-Elemente sind Cluster, bestehend aus einen String oder Enum als Beschreibung, und einem Variant zur Aufnahme jedes Datenformates.
Außer Queues gibt es noch Melder, und bei denen können die Daten auch von mehreren Empfängern gelesen werden. (Die Daten werden hier nicht, wie bei der Queue, durch Lesen gelöscht, sondern erst durch neues Beschreiben). Habe ich allerdings noch nicht benutzt und wüßte jetzt kein Beispiel, wo man das braucht.
NB: Die exzessive Verwendung von Sequenzstrukturen ist meiner Erfahrung nach die Visitenkarte jeden Anfängers. In Deinem Fall: Die Referenzleitung der Queue besorgt die richtige Reihenfolge der Ausführung, Sequenz überflüssig