Konfigurierbare Publisher-Registrierung

Der Telemetriedienst bietet die konfigurierbare Publisher-Registry als sekundäre Methode zur Datenerhebung. Anwendungen und Dienste können sich in der Registry als Telemetrie-Publisher registrieren, wodurch sie dem Telemetriedienst zur Verfügung gestellt werden. Weitere Informationen zu den von uns unterstützten Datenquellentypen finden Sie unter Datenquellen.

Bibliothek

Die Telemetrie kommuniziert über Binder mit Publishern der konfigurierbaren Publisher-Registry. Anstatt die AIDL-Schnittstellen manuell zu implementieren, empfehlen wir dringend, die experimentelle Bibliothek für die konfigurierbare Publisher-Registry zu verwenden, die Teil unseres Telemetry SDK ist. Die Bibliothek abstrahiert die AIDL-Schnittstellen und bietet eine saubere, typsichere API zum Definieren von Publishern, zum Veröffentlichen von Telemetriedaten und zum Verwalten der Konvertierung von Protobuf-Nachrichten in ihr Wire-Format.

Weitere Informationen zur Verwendung der Bibliothek finden Sie unter Konfigurierbare Publisher Registry-Bibliothek.

Manuelle Publisher-Implementierung und ‑Registrierung

Wenn Sie die bereitgestellte Bibliothek nicht verwenden möchten, können Sie die erforderlichen Binder-Schnittstellen manuell implementieren. In den folgenden Abschnitten finden Sie eine Übersicht über die Schritte, die zum Implementieren eines Publishers und zum Registrieren in der konfigurierbaren Publisher-Registry erforderlich sind.

Registrierung

Im Gegensatz zu SDV-Diensten, deren Metadaten wie die Nachrichtenstruktur in VSIDL definiert und für das System verfügbar sind, müssen Publisher, die die konfigurierbare Publisher-Registry verwenden, ihre Metadaten explizit angeben. Sie geben diese Metadaten während der Registrierung über das Objekt PublisherInfo an.

Sie registrieren diese Publisher über die IConfigurablePublisherRegistry AIDL Schnittstelle. Daher können Sie die Publisher in jeder Sprache schreiben, die von AIDL unterstützt wird, einschließlich Java, C++ und Rust. Die Schnittstelle bietet zwei Methoden:

  • Verwenden Sie die Methode registerPublisher, um einen neuen Publisher beim Telemetriedienst zu registrieren:

    void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)
    
  • Verwenden Sie die Methode unregisterPublisher, um die Registrierung eines zuvor registrierten Publishers beim Telemetriedienst aufzuheben:

    void unregisterPublisher(in @utf8InCpp String serviceName)
    

Das Objekt PublisherInfo gibt die grundlegenden Informationen des Publishers an:

Feld Beschreibung
serviceName Ein benutzerdefinierter Name des Publishers. Verwenden Sie diesen Namen, um in Metrikkonfigurationen darauf zu verweisen.
fileDescriptorSet Ein serialisiertes google.protobuf.FileDescriptorSet (weitere Informationen finden Sie unter Selbstbeschreibende Nachrichten), das den Nachrichtendeskriptor (benannt durch das Feld messageTypeName) der Nachricht enthält, die dieser Publisher veröffentlicht, sowie alle erforderlichen Abhängigkeiten. Der Telemetriedienst verwendet den Nachrichtendeskriptor, um die vom Publisher gesendeten Daten zu deserialisieren. Weitere Informationen zum Generieren dieses Deskriptors während der Build-Zeit finden Sie unter Java-Protobuf-Deskriptorgenerator-Tool.
messageTypeName Vollständiger Name der Protobuf-Nachrichten, die Ihr Publisher veröffentlicht. Der Nachrichtendeskriptor dieser Nachricht muss in fileDescriptorSet deklariert werden.
supportsGet Gibt an, ob der Publisher die neueste Nachricht bereitstellen kann, ohne sie zu abonnieren.

Implementierung

Ihr benutzerdefinierter Publisher muss die Schnittstelle IConfigurablePublisher implementieren, indem er die folgenden Methoden bereitstellt:

  • Der Telemetriedienst ruft createSubscription auf, um einen Publisher zu abonnieren, wenn connection_type der Datenquelle für diesen Publisher in der Metrikkonfiguration auf SUBSCRIPTION gesetzt ist. Das an Ihren Publisher übergebene ISubscriber-Argument bietet eine Methode sendData(in byte[] data), mit der Sie Protobuf-Nachrichten an den Telemetriedienst streamen können.

    IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)
    
  • Der Telemetriedienst ruft getLatestMessage auf, um die neueste Nachricht eines Publishers abzurufen, wenn connection_type der Datenquelle für diesen Publisher in der Metrikkonfiguration auf ON_DEMAND gesetzt ist. Der Telemetriedienst verwendet diese Methode nur, wenn PublisherInfo des Publishers supportsGet = true angibt.

    @nullable byte[] getLatestMessage(in @nullable byte[] configuration)
    

Der Telemetriedienst setzt das Argument configuration auf die Option configuration der Datenquelle in der Metrikkonfiguration.