Was sind Konfigurationsmuster im Datenauftragsverarbeiter?
Wichtig
Die von Azure Arc aktivierte Azure IoT Operations Preview befindet sich derzeit in der VORSCHAU. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.
Sie müssen eine neue Azure IoT Operations-Installation bereitstellen, wenn eine allgemein verfügbare Version verfügbar ist, können Sie keine Vorschauinstallation aktualisieren.
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
: Stundem
: Minutes
: Sekundems
: Millisekundeus
,µs
: Mikrosekundens
: 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 die 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 type
dynamic
. 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 |