Il servizio di telemetria fornisce il registro dei publisher configurabile come mezzo secondario per la raccolta dei dati. Le applicazioni e i servizi possono registrarsi come publisher di telemetria nel registro, che a sua volta li rende disponibili al servizio di telemetria. Per ulteriori informazioni sui tipi di origini dati supportati, consulta Origini dati.
Raccolta
Telemetry comunica con i publisher del registro dei publisher configurabile tramite Binder. Anziché implementare manualmente le interfacce AIDL, ti consigliamo vivamente di utilizzare la libreria sperimentale Configurable Publisher Registry, che fa parte del nostro Telemetry SDK. La libreria astrae le interfacce AIDL e fornisce un'API pulita e sicura per i tipi per definire i publisher, pubblicare dati di telemetria e gestire la conversione dei messaggi protobuf nel formato di trasmissione.
Per ulteriori informazioni sull'utilizzo della libreria, consulta Libreria del registro di sistema Configurable Publisher.
Implementazione e registrazione manuali dei publisher
Se preferisci non utilizzare la libreria fornita, puoi implementare manualmente le interfacce Binder necessarie. Le sezioni seguenti forniscono una panoramica dei passaggi necessari per implementare un publisher e registrarlo nel registro dei publisher configurabile.
Registrazione
A differenza dei servizi SDV, i cui metadati, come la struttura dei messaggi, sono definiti in VSIDL e disponibili per il sistema, gli editori che utilizzano il registro degli editori configurabile devono fornire esplicitamente i propri metadati. Fornisci questi
metadati tramite l'oggetto PublisherInfo durante la registrazione.
Registri questi editori utilizzando l'interfaccia IConfigurablePublisherRegistry
AIDL. Pertanto, puoi scrivere gli editori in qualsiasi linguaggio supportato da AIDL, tra cui Java, C++ e Rust. L'interfaccia fornisce due metodi:
Utilizza il metodo
registerPublisherper registrare un nuovo editore nel servizio Telemetry:void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)Utilizza il metodo
unregisterPublisherper annullare la registrazione di un editore registrato in precedenza dal servizio di telemetria:void unregisterPublisher(in @utf8InCpp String serviceName)
L'oggetto PublisherInfo specifica le informazioni di base del publisher:
| Campo | Descrizione |
|---|---|
serviceName |
Un nome dell'editore definito dall'utente. Utilizza questo nome per farvi riferimento dalle configurazioni delle metriche. |
fileDescriptorSet |
Un google.protobuf.FileDescriptorSet serializzato (vedi Messaggi autodescrittivi per maggiori informazioni) che contiene il descrittore del messaggio (denominato dal campo messageTypeName) del messaggio pubblicato da questo publisher e tutte le relative dipendenze necessarie. Il servizio di telemetria utilizza il descrittore del messaggio per deserializzare i dati inviati dal publisher. Per maggiori informazioni sulla generazione in tempo di compilazione, vedi Strumento di generazione di descrittori protobuf Java. |
messageTypeName |
Nome completo dei messaggi protobuf pubblicati dal tuo editore. Il descrittore del messaggio deve essere dichiarato in fileDescriptorSet. |
supportsGet |
Indica se il publisher può fornire l'ultimo messaggio senza iscriversi. |
Implementazione
L'editore personalizzato deve implementare l'interfaccia IConfigurablePublisher fornendo i seguenti metodi:
Il servizio di telemetria chiama
createSubscriptionper abbonarsi a un publisher seconnection_typedell'origine dati per questo publisher nella configurazione delle metriche è impostato suSUBSCRIPTION. L'argomentoISubscribertrasmesso al publisher fornisce un metodosendData(in byte[] data), che puoi utilizzare per trasmettere in streaming i messaggi protobuf al servizio di telemetria.IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)Il servizio di telemetria chiama
getLatestMessageper recuperare l'ultimo messaggio di un editore seconnection_typedell'origine dati per questo editore nella configurazione delle metriche è impostato suON_DEMAND. Il servizio di telemetria utilizza questo metodo solo sePublisherInfodell'editore indicasupportsGet = true.@nullable byte[] getLatestMessage(in @nullable byte[] configuration)
Il servizio di telemetria imposta l'argomento configuration sull'opzione configuration
dell'origine dati nella configurazione delle metriche.