Gemeinsame Statusaufgabe

Ossi Galkin avatarGeschrieben vonOssi Galkin Vor über einer Woche aktualisiert

Ein neues Element in Frends 5.4+

Gemeinsam genutzte Statusformen ermöglichen den einfachen Datenaustausch zwischen Prozessausführungen in einem einzelnen Prozess oder zwischen allen Prozessen in einemAgentengruppemit einer gemeinsamen Datenbank.

Verschiedene Befehle für die Form sind:

  • AddOrUpdate – Wenn der Schlüssel vorhanden ist, wird der vorhandene Wert aktualisiert. Andernfalls wird das Schlüssel/Wert-Paar dem Speicher hinzugefügt.

  • GetOrAdd - Wenn der Schlüssel vorhanden ist, wird der Wert abgerufen. Andernfalls wird das in den Parametern angegebene Schlüssel/Wert-Paar dem Speicher hinzugefügt.

  • TryAdd – Wenn der Schlüssel nicht existiert, wird das Schlüssel/Wert-Paar dem Speicher hinzugefügt.

  • TryGetValue – Wenn der Schlüssel vorhanden ist, wird der Wert abgerufen.

  • TryRemove – Wenn der Schlüssel vorhanden ist, wird das Schlüssel/Wert-Paar aus dem Speicher entfernt.

  • TryUpdate – Wenn der Schlüssel vorhanden ist, wird der Wert aktualisiert.

  • GetTTL – Ruft die Lebensdauer des Schlüssels ab.

  • UpdateTTL – Aktualisieren Sie die Gültigkeitsdauer des Schlüssels.

Befehle haben die folgenden Parameter:

  • Schlüssel - Alle Befehle haben einen „Schlüssel“-Parameter. Dieser Parameter ist ein Ausdruck und wird verwendet, um zu entscheiden, welcher Wert abgerufen werden soll oder wo ein Wert aktualisiert/hinzugefügt werden soll.

  • Wert – Befehle zum Hinzufügen und Aktualisieren haben einen Parameter namens „Wert“. Dies ist der Wert, der für den Schlüssel entweder hinzugefügt oder aktualisiert wird, und er muss JSON-serialisierbar sein.

  • Time to live (TTL) - Dieser Parameter kann konfiguriert werden, um festzulegen, wie lange ein Schlüssel im Speicher verbleiben soll, bevor das Schlüssel/Wert-Paar gelöscht wird. Befehle zum Hinzufügen und Aktualisieren aktualisieren diese TTL. Der Befehl GetOrAdd aktualisiert die TTL nicht, wenn der Schlüssel bereits im Speicher vorhanden ist. Die maximale TTL beträgt 30 Tage und die minimale 1 Minute.

  • Bei Fehler eine Ausnahme auslösen - Wenn der Shared State-Befehl aus irgendeinem Grund fehlschlägt (z. B. TryAdd wird verwendet, aber der Schlüssel ist bereits vorhanden) und dieser Parameter gesetzt ist, schlägt die Shared State-Aufgabe in einer Ausnahme fehl, die auf der Prozessseite behandelt werden muss. Andernfalls wird die Prozessausführung beendet. Wenn dieser Parameter nicht gesetzt ist und der Befehl fehlschlägt, enthält das Shared State-Ergebnis die Information, dass der Befehl fehlgeschlagen ist.

  • Verfügbar für alle Prozesse in einer Agentengruppe - Wenn dieser Parameter festgelegt ist, ist das Schlüssel-/Wertpaar für alle Prozesse innerhalb dieser Agentengruppe zugänglich. Wenn der Parameter nicht festgelegt ist, hat nur der einzelne Prozess Zugriff auf dieses Schlüssel-/Wertpaar. Wenn ein Schlüssel mit diesem Parametersatz hinzugefügt wird, können Sie das Schlüssel-/Wertpaar nicht mit einem gemeinsam genutzten Statusbefehl abrufen, für den der Parametersatz nicht festgelegt ist.

Das Ergebnis der gemeinsam genutzten Zustandsformen ist ein Objekt mit den folgenden Eigenschaften:

  • Erfolg – ​​Boolescher Wert (wahr/falsch), der angibt, ob der Befehl erfolgreich war oder nicht.

  • Wert – Wenn der Befehl einen Wert zurückgibt, ist dieser vom Typ „dynamisch“.

  • Nachricht – Textinformationen zur Befehlsausführung, die bei der Entwicklung und beim Debuggen helfen.

Auf die Ergebniseigenschaften kann direkt im Prozess zugegriffen werden, beispielsweise mit#Ergebnis.Wertoder#Ergebnis.Erfolg.

Beispielsweise der Ausdruck#Ergebnis.Wert.Betragim Prozess hätte den Wert 108.

Notiz: Für die Agenten in der Agentengruppe muss eine gemeinsame Datenbank konfiguriert sein, damit die Agenten die zwischengespeicherten Werte gemeinsam nutzen können.


Verwandte ArtikelFrends Agent-Volume-HalterungenFrends Agent Shared State Store und hohe VerfügbarkeitAgenten-ShopEinführung in die Shared State TaskEinführung in die Authentifizierung in HTTP-Integrationen