0

Basierend auf der Dokumentation für Spring Cloud-Datenfluss (SCDF) werden nur Eigenschaften mit dem Präfix "bereitgestellt" bezeichnet. oder "App" werden berücksichtigt, wenn eine Anwendung (sei es eine Quelle, ein Prozessor oder eine Senke) als Teil eines Streams bereitgestellt wird.App-Eigenschaften in Spring Cloud Datenflussanwendung

Allerdings habe ich bemerkt, dass neben dem Präfix, alle Eigenschaften als "Strings" zur Verfügung gestellt werden müssen, egal was ihr ursprünglicher Typ ist; andernfalls werden sie einfach nach dieser Codezeile von SCDF verworfen:

propertiesToUse = DeploymentPropertiesUtils.convert(props); 

, die tut dies:

public static Map<String, String> convert(Properties properties) { 
    Map<String, String> result = new HashMap<>(properties.size()); 
    for (String key : properties.stringPropertyNames()) { 
     result.put(key, properties.getProperty(key)); 
    } 
    return result; 
} 

Wie Sie oben vom Schnipsel sehen kann, ist es nur „stringPropertyNames“ betrachtet, die Filter alles aus, was nicht als "String" zur Verfügung gestellt wird.

Ich nehme an, dieses Verhalten ist absichtlich, aber warum? Warum nehmen Sie nicht einfach alle vom Benutzer definierten Eigenschaften mit dem richtigen Präfix auf?

Vielen Dank für Ihre Unterstützung.

Antwort

2

Es wird erwartet, dass alle Bereitstellungseigenschaften Map<String, String> sind, basierend auf contract, die vom Deployer SPI festgelegt wurden.

Ich glaube, einer der Gründe ist String-Schlüssel, Werte an die Ziel-Deployment-Plattform ohne Serialisierung/De-Serialisierung Hürde übergeben werden. Die Verwendung von String-Werten ähnelt der Verwendung dieser Schlüssel-Value-Eigenschaften als Umgebungsvariablen (z. B. in der Zielimplementierungsplattform).

+0

Ja, das macht dann vollkommen Sinn. –