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
createSubscriptionauf, um einen Publisher zu abonnieren, wennconnection_typeder Datenquelle für diesen Publisher in der Metrikkonfiguration aufSUBSCRIPTIONgesetzt ist. Das an Ihren Publisher übergebeneISubscriber-Argument bietet eine MethodesendData(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
getLatestMessageauf, um die neueste Nachricht eines Publishers abzurufen, wennconnection_typeder Datenquelle für diesen Publisher in der Metrikkonfiguration aufON_DEMANDgesetzt ist. Der Telemetriedienst verwendet diese Methode nur, wennPublisherInfodes PublisherssupportsGet = trueangibt.@nullable byte[] getLatestMessage(in @nullable byte[] configuration)
Der Telemetriedienst setzt das Argument configuration auf die Option configuration der Datenquelle in der Metrikkonfiguration.