Q Sprache - Prozessübergreifende Kommunikation

Mit KDB + kann ein Prozess über Interprozesskommunikation mit einem anderen Prozess kommunizieren. Kdb + -Prozesse können eine Verbindung zu jedem anderen kdb + auf demselben Computer, demselben Netzwerk oder sogar remote herstellen. Wir müssen nur den Port angeben, und dann können die Clients mit diesem Port kommunizieren. Irgendeinq Prozess kann mit jedem anderen kommunizieren q Prozess, solange es im Netzwerk zugänglich ist und auf Verbindungen wartet.

  • Ein Serverprozess wartet auf Verbindungen und verarbeitet alle Anforderungen

  • Ein Client-Prozess initiiert die Verbindung und sendet auszuführende Befehle

Client und Server können sich auf demselben Computer oder auf verschiedenen Computern befinden. Ein Prozess kann sowohl ein Client als auch ein Server sein.

Eine Kommunikation kann sein,

  • Synchronous (Warten Sie, bis ein Ergebnis zurückgegeben wird.)

  • Asynchronous (kein Warten und kein Ergebnis zurückgegeben)

Server initialisieren

EIN q Der Server wird initialisiert, indem der Port angegeben wird, der abgehört werden soll.

q –p 5001 / command line
\p 5001   / session command

Kommunikationsgriff

Ein Kommunikationshandle ist ein Symbol, das mit „:“ beginnt und die Form - hat.

`:[server]:port-number

Beispiel

`::5001              / server and client on same machine
`:jack:5001          / server on machine jack
`:192.168.0.156      / server on specific IP address
`:www.myfx.com:5001  / server at www.myfx.com

Um die Verbindung zu starten, verwenden wir die Funktion "hopen", die ein ganzzahliges Verbindungshandle zurückgibt. Dieses Handle wird für alle nachfolgenden Clientanforderungen verwendet. Zum Beispiel -

q)h:hopen `::5001

q)h"til 5"
0 1 2 3 4

q)hclose h

Synchrone und asynchrone Nachrichten

Sobald wir ein Handle haben, können wir eine Nachricht entweder synchron oder asynchron senden.

Synchronous Message- Sobald eine Nachricht gesendet wurde, wartet sie weiter und gibt das Ergebnis zurück. Sein Format ist wie folgt -

handle “message”

Asynchronous Message- Beginnen Sie nach dem Senden einer Nachricht sofort mit der Verarbeitung der nächsten Anweisung, ohne warten zu müssen und ein Ergebnis zurückzugeben. Sein Format ist wie folgt -

neg[handle] “message”

Nachrichten, die eine Antwort erfordern, z. B. Funktionsaufrufe oder Select-Anweisungen, verwenden normalerweise die synchrone Form. Nachrichten, die keine Ausgabe zurückgeben müssen, z. B. das Einfügen von Aktualisierungen in eine Tabelle, sind asynchron.