Configurable Publisher Registry

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 registerPublisher per registrare un nuovo editore nel servizio Telemetry:

    void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)
    
  • Utilizza il metodo unregisterPublisher per 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 createSubscription per abbonarsi a un publisher se connection_type dell'origine dati per questo publisher nella configurazione delle metriche è impostato su SUBSCRIPTION. L'argomento ISubscriber trasmesso al publisher fornisce un metodo sendData(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 getLatestMessage per recuperare l'ultimo messaggio di un editore se connection_type dell'origine dati per questo editore nella configurazione delle metriche è impostato su ON_DEMAND. Il servizio di telemetria utilizza questo metodo solo se PublisherInfo dell'editore indica supportsGet = 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.