Teilen über


Was sind Konfigurationsmuster in Azure IoT-Datenprozessor (Preview)?

Wichtig

Die von Azure Arc aktivierte Azure IoT Operations Preview befindet sich derzeit in der VORSCHAU. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.

Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Mehrere Arten von Konfigurationen sind für mehrere Pipelinephasen üblich. In diesem Artikel werden Pfad-, Batch-, Vorlagen-, Wiederholungs-und Dauerkonfigurationsmuster beschrieben.

Pfad

Mehrere Pipelinephasen verwenden einen Pfad, um einen Speicherort in der Nachricht zu identifizieren, in den Daten gelesen oder in diese geschrieben werden sollen. Um diese Speicherorte zu definieren, verwenden Sie ein Path Feld, das jq-Syntax verwendet:

  • Ein Pfad wird als Zeichenfolge in der Benutzeroberfläche definiert und verwendet die jq Syntax.
  • Ein Pfad wird relativ zum Stamm der Datenverarbeitungsnachricht definiert. Der Pfad . bezieht sich auf die gesamte Nachricht.
  • Alle Pfade beginnen mit ..
  • Jedes Segment des Pfads kann Folgendes sein:
    • .<identifier> für einen alphanumerischen Objektschlüssel wie .topic.
    • ."<identifier>" für einen beliebigen Objektschlüssel wie ."asset-id".
    • ["<identifier>"] für einen beliebigen Objektschlüssel wie ["asset-id"].
    • [<index>] für einen Arrayindex wie [2].
  • Segmente können verkettet werden, um komplexe Pfade zu bilden.

Einzelne Pfadsegmente müssen den folgenden regulären Ausdrücken entsprechen:

Muster RegEx Beispiel
.<identifier> \.[a-zA-Z_][a-zA-Z0-9_]* .topic
."<identifier>" \."(\\"\|[^"])*" ."asset-id"
["<identifier>"] \["(\\"\|[^"])*"\] ["asset-id"]
[<index>] \[-?[0-9]+\] [2]

Weitere Informationen finden Sie unter Pfade im jq-Handbuch.

Beispiele für Pfade

Die folgenden Pfade sind Beispiele, die auf der Standarddatenverarbeitung Nachricht-Struktur basieren:

  • .systemProperties gibt Folgendes zurück:

    {
      "partitionKey": "foo",
      "partitionId": 5,
      "timestamp": "2023-01-11T10:02:07Z"
    }
    
  • .payload.humidity gibt Folgendes zurück:

    10
    
  • .userProperties[0] gibt Folgendes zurück:

    {
      "key": "prop1",
      "value": "value1"
    }
    
    
  • .userProperties[0].value gibt Folgendes zurück:

    value1
    

Duration

Mehrere Phasen erfordern die Definition einer Zeitbereich-Dauer. Beispielsweise Fenster in einer Aggregatphase und Timeouts in einer Popupphase. In diesen Phasen wird ein Duration Feld verwendet, um diesen Wert darzustellen.

Mehrere Pipelinephasen verwenden einer Zeitbereich-Dauer. Beispielsweise verfügt die Aggregatstufe über eine Windows-Eigenschaft, und die Popupphasen weisen eine Timeouts-Eigenschaft auf. Um diese Zeitspanne zu definieren, verwenden Sie ein Duration Feld:

Dauer ist ein Zeichenfolgenwert mit dem folgenden Format <number><char><number><char>, wobei ein Zeichen Folgendes sein kann:

  • h: Stunde
  • m: Minute
  • s: Sekunde
  • ms: Millisekunde
  • us, µs: Mikrosekunde
  • ns: Nanosekunde

Beispiele für Dauer

  • 2h
  • 1h10m30s
  • 3m9ms400ns

Vorlagen

In mehreren Phasen müssen Sie eine Zeichenfolge mit einer Mischung aus dynamischen und statischen Werten definieren. In diesen Phasen werden Vorlagenwerte verwendet.

Datenverarbeitungsvorlagen verwenden Mustache-Syntax, um dynamische Werte in Zeichenfolgen zu definieren.

Die für die Verwendung in Vorlagen verfügbaren dynamischen Systemwerte sind:

  • instanceId: Die Datenauftragsverarbeiterinstanz-ID.
  • pipelineId: Die Pipeline-ID, zu der die Phase gehört.
  • YYYY: Das aktuelle Jahr.
  • MM: Der aktuelle Monat.
  • DD: Das aktuelle Datum.
  • HH: Die aktuelle Stunde.
  • mm: Die aktuelle Minute.

Derzeit können Sie Vorlagen verwenden, um Dateipfade in einer Zielstufe zu definieren.

Statische und dynamische Felder

In einigen Phasen ist die Definition von Werten erforderlich, die entweder statische Zeichenfolgen oder ein dynamischer Wert sein können, der von einer Path in einer Nachricht abgeleitet ist. Zum Definieren dieser Werte können Sie statischen oder dynamischen Felder verwenden.

Ein statisches oder dynamisches Feld wird immer als Objekt mit einem type Feld geschrieben, das einen von zwei Werten aufweist: static oder dynamic. Das Schema variiert je nach type.

Statische Felder

Die statische Definition ist ein fester Wert für type ist static. Der tatsächliche Wert wird in value gehalten.

Feld Typ Beschreibung Erforderlich Standard Beispiel
Typ const string Der Typ des Felds. Ja - static
value Beliebig Der statische Wert, der für die Konfiguration verwendet werden soll (in der Regel eine Zeichenfolge). Ja - "static"

Die folgenden Beispiele zeigen einige statische Felddefinitionen:

{
    "some-field": {
        "type": "static",
        "value": "some-static-value"
    }
}
{
    "some-boolean-field": {
        "type": "static",
        "value": true
    }
}
{
    "some-complex-field": {
        "type": "static",
        "value": {
            "some": [
                "nested",
                "data"
            ]
        }
    }
}

Dynamische Felder

Der feste Wert ist typedynamic. Der Wert ist ein jq-Pfad.

Feld Typ Beschreibung Erforderlich Standard Beispiel
Typ const string Der Typ des Felds. Ja - dynamic
value Pfad Der Pfad in jeder Nachricht, in der ein Wert für das Feld dynamisch abgerufen werden kann. Ja - .systemProperties.partitionKey

Das folgende Beispiel zeigt eine dynamische Felddefinition:

{
    "some-field": {
        "type": "dynamic",
        "value": ".systemProperties.topic"
    }
}

Erneut versuchen

Phasen, die externe Dienste aufrufen, können Wiederholungen verwenden, um temporäre Fehler zu behandeln und die Zuverlässigkeit zu verbessern. Sie können die Standardmäßige Wiederholungsrichtlinie überschreiben, wenn Sie eine Phase konfigurieren.

Es gibt vier mögliche Wiederholungsrichtlinien:

  • default: Die Standardmäßige Wiederholungsrichtlinie besteht darin, einen exponentiellen Backoff-Wiederholungsversuch mit drei Wiederholungsversuchen und 500 ms anfänglichen Wiederholungsintervallen zu verwenden.
  • none: Es werden keine Wiederholungen ausgeführt.
  • fixed: Eine feste Wiederholungsrichtlinie wiederholt eine feste Anzahl von Wiederholungen mit einem festen Intervall zwischen jedem Wiederholungsversuch.
  • exponential: Eine exponentielle Wiederholungsrichtlinie wiederholt eine feste Anzahl von Wiederholungen mit einem exponentiell steigenden Intervall zwischen jedem Wiederholungsversuch.

Wenn Sie wählen default oder none, müssen Sie keine weitere Konfiguration bereitstellen. Wenn Sie wählen fixed oder exponential, müssen Sie weitere Konfigurationen bereitstellen:

Fest

Feld Typ Description Erforderlich? Standard Beispiel
type Zeichenfolge Der Name des Wiederholungstyps: fixed Ja N/V fixed
interval Dauer Anfänglicher Zeitraum zwischen jedem Wiederholungsversuche. No 500ms 2s
maxRetries int Die Anzahl der Wiederholungen von 1 bis zu 20 No 3 20

Exponentiell

Feld Typ Description Erforderlich? Standard Beispiel
type Zeichenfolge Der Name des Wiederholungstyps: exponential Ja N/V exponential
interval Dauer Anfänglicher Zeitraum zwischen jedem Wiederholungsversuche. No 500ms 2s
maxRetries int Die Anzahl der Wiederholungen von 1 bis zu 20 No 3 20
maxInterval Dauer Maximaler Zeitraum zwischen jedem Wiederholungsversuche. No Keine 100s

Exponentielle Wiederholungszeiten werden wie folgt berechnet: Wenn das Intervall beginnt mit 500ms, sind randInt(500ms, 500ms * 2^1)die nächsten Wiederholungsintervalle , , randInt(500ms, 500ms * 2^2)... . randInt(500ms, 500ms * 2^maxRetries)

Batch

Mehrere Ziele in der Ausgabephase ermöglichen es Ihnen, Nachrichten zu stapeln, bevor sie in das Ziel schreiben. Diese Ziele verwenden Batch zum Definieren der Batchparameter.

Derzeit können Sie Batch basierend auf der Zeit definieren. Zum Definieren der Batchverarbeitung müssen Sie das Zeitintervall und einen Pfad angeben. Path definiert, welcher Teil der eingehenden Nachricht in die Batchausgabe einbezogen werden soll.

Feld Typ Beschreibung Erforderlich Standard Beispiel
Time Dauer Dauer des Batches von Daten Nein 60s (In Zielen, in denen Batchverarbeitung erzwungen wird) 120s
Pfad Path Der Pfad zum Wert in jeder Nachricht, die in die Ausgabe eingeschlossen werden soll. Nein .payload .payload.output