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.


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
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.