ZMQ REQ Source

Fordert synchron einen Wert von einem ZMQ-REP-Server an — jede Anfrage blockiert, bis genau eine Antwort eintrifft.

1. Beschreibung des Blocks

Der ZMQ REQ Source-Block verbindet sich als Client zu einem ZeroMQ-REP-Server und fordert aktiv einen Wert an — entweder als Stream-Item (ZMQ REQ Source) oder als einzelne Nachricht über einen Message-Port (ZMQ REQ Message Source). Request/Reply ist im Gegensatz zu Publish/Subscribe und Push/Pull ein synchrones Muster: Der REQ-Block wartet nach jeder Anfrage, bis die Gegenseite (ZMQ REP Sink) genau eine Antwort geliefert hat, bevor er die nächste Anfrage senden darf.

ZMQ REQ Source

ZMQ REQ Message Source

2. Technischer Einsatz

Immer dann, wenn ein Flowgraph gezielt einen aktuellen Wert von einem externen Prozess abfragen soll, statt passiv auf Daten zu warten — z. B. eine Konfigurationsabfrage, ein Steuerkommando mit erwarteter Bestätigung, oder ein Messwert, der nur bei Bedarf abgerufen wird. Für kontinuierliche Signalverarbeitung ist REQ/REP wegen des blockierenden Wartens auf eine Antwort selten die richtige Wahl — dort passen ZMQ SUB Source (Broadcast) oder ZMQ PULL Source (Pipeline) meist besser.

3. Parameter und Dimensionierung

Parameter Typ/Einheit Bedeutung Dimensionierungshinweis
Address String ZeroMQ-Endpoint des REP-Servers, z. B. tcp://127.0.0.1:5556 muss exakt der Adresse entsprechen, auf der der REP-Sink bindet
Timeout (msec) Millisekunden wie lange auf eine Antwort gewartet wird, bevor der Block einen Zyklus abschließt zu klein gewählt riskiert vorzeitige Zeitüberschreitungen bei langsamem Server; siehe Warnhinweis unten
Connection Enum (Bind/Connect) ob der Block sich verbindet (Connect) oder selbst bindet (Bind) REQ-Blöcke verbinden sich per Default — der REP-Server ist die feste, bekannte Adresse
Pass Tags (nur Stream-Variante) Bool ob übertragene Stream-Tags ausgewertet werden „Yes" nur, wenn die Gegenseite ebenfalls GNU Radio ist

4. Ein- und Ausgänge

Ein-/Ausgang Typ
Ausgang (ZMQ REQ Source) beliebiger Stream-Typ (Complex, Float, Int, Short, Byte)
Ausgang (ZMQ REQ Message Source) Message-Port (PMT)
Eingang keiner (Quelle)

5. Weitere wichtige Aspekte

Blockierendes Verhalten: Läuft auf der Gegenseite kein passender REP-Server (oder antwortet er nicht), blockiert der Flowgraph an dieser Stelle bis zum Timeout. Da REQ/REP einen strikten Ping-Pong-Ablauf erzwingt, kann ein REQ-Socket nach einem Timeout ohne Antwort in einen inkonsistenten Zustand geraten — die Robustheit hängt stark davon ab, dass der REP-Server zuverlässig läuft.

Synchron statt Fire-and-Forget: Anders als ZMQ PUB Sink oder ZMQ PULL Source, die unabhängig vom Gegenüber senden bzw. empfangen, ist bei REQ/REP jede Anfrage an genau eine Antwort gekoppelt — passend für gelegentliche Steuer-/Abfragebefehle, nicht für hochfrequente Datenströme.