Yapılandırılabilir Yayıncı Kayıt Defteri

Telemetri hizmeti, veri toplama için ikincil bir yöntem olarak Yapılandırılabilir Yayıncı Kaydı'nı sağlar. Uygulamalar ve hizmetler, kendilerini kayıt otoritesine telemetri yayıncısı olarak kaydedebilir. Bu da onları Telemetri hizmetinde kullanılabilir hâle getirir. Desteklediğimiz veri kaynakları türleri hakkında daha fazla bilgi için Veri Kaynakları başlıklı makaleyi inceleyin.

Kitaplık

Telemetri, Configurable Publisher Registry yayıncılarıyla Binder aracılığıyla iletişim kurar. AIDL arayüzlerini manuel olarak uygulamak yerine, Telemetry SDK'mızın bir parçası olan deneysel Yapılandırılabilir Yayıncı Kayıt Defteri kitaplığını kullanmanızı önemle tavsiye ederiz. Kitaplık, AIDL arayüzlerini soyutlar ve yayıncıları tanımlamak, yayıncılık telemetri verilerini yayınlamak ve protobuf mesajlarının kablo biçimine dönüştürülmesini yönetmek için temiz ve tür açısından güvenli bir API sağlar.

Kitaplığı kullanma hakkında daha fazla bilgi için Configurable Publisher Registry library başlıklı makaleyi inceleyin.

Yayıncıların manuel olarak uygulaması ve kaydolması

Sağlanan kitaplığı kullanmak istemiyorsanız gerekli Binder arayüzlerini manuel olarak uygulayabilirsiniz. Aşağıdaki bölümlerde, bir yayıncıyı uygulamak ve Yapılandırılabilir Yayıncı Kayıt Defteri'ne kaydetmek için gereken adımlara genel bir bakış sunulmaktadır.

Kayıt

VSIDL'de tanımlanan ve sistem tarafından kullanılabilen mesaj yapısı gibi meta verileri olan SDV hizmetlerinin aksine, Yapılandırılabilir Yayıncı Kayıt Defteri'ni kullanan yayıncılar meta verilerini açıkça sağlamalıdır. Bu meta verileri kayıt sırasında PublisherInfo nesnesi aracılığıyla sağlarsınız.

Bu yayıncıları IConfigurablePublisherRegistry AIDL arayüzünü kullanarak kaydedersiniz. Bu nedenle, yayıncıları Java, C++ ve Rust dahil olmak üzere AIDL'nin desteklediği herhangi bir dilde yazabilirsiniz. Arayüzde iki yöntem sunulur:

  • Yeni bir yayıncıyı Telemetri hizmetine kaydetmek için registerPublisher yöntemini kullanın:

    void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)
    
  • Daha önce kaydedilmiş bir yayıncının Telemetri hizmetinden kaydını silmek için unregisterPublisher yöntemini kullanın:

    void unregisterPublisher(in @utf8InCpp String serviceName)
    

PublisherInfo nesnesi, yayıncının temel bilgilerini belirtir:

Alan Açıklama
serviceName Yayıncının kullanıcı tanımlı adı. Metrik yapılandırmalarından buna referans vermek için bu adı kullanın.
fileDescriptorSet Bu yayıncının yayınladığı mesajın mesaj tanımlayıcısını (messageTypeName alanı tarafından adlandırılır) ve gerekli tüm bağımlılıklarını içeren, serileştirilmiş bir google.protobuf.FileDescriptorSet (daha fazla bilgi için Self-describing Messages başlıklı makaleyi inceleyin). Telemetri hizmeti, yayıncı tarafından gönderilen verileri seri durumdan çıkarmak için mesaj tanımlayıcıyı kullanır. Bu tanımlayıcının derleme zamanında oluşturulması hakkında daha fazla bilgi için Java protobuf tanımlayıcı oluşturma aracını inceleyin.
messageTypeName Yayıncınızın yayınladığı protobuf mesajlarının tam adı. Bu mesajın mesaj tanımlayıcısı fileDescriptorSet içinde bildirilmelidir.
supportsGet Yayıncının, abone olmadan en son mesajı sağlayıp sağlayamayacağını gösterir.

Uygulama

Özel yayıncınız, aşağıdaki yöntemleri sağlayarak IConfigurablePublisher arayüzünü uygulamalıdır:

  • Ölçüm yapılandırmasında bu yayıncının veri kaynağının connection_type değeri SUBSCRIPTION olarak ayarlanmışsa Telemetri hizmeti, yayıncıya abone olmak için createSubscription işlevini çağırır. Yayıncınıza iletilen ISubscriber bağımsız değişkeni, Telemetri hizmetine protobuf mesajları aktarmak için kullanabileceğiniz bir sendData(in byte[] data) yöntemi sağlar.

    IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)
    
  • Metrik yapılandırmasında bu yayıncıya ait veri kaynağının connection_type değeri ON_DEMAND olarak ayarlanmışsa Telemetri hizmeti, yayıncının en son mesajını getirmek için getLatestMessage işlevini çağırır. Telemetri hizmeti bu yöntemi yalnızca yayıncının PublisherInfo değeri supportsGet = true ise kullanır.

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

Telemetri hizmeti, metrik yapılandırmasında veri kaynağının configuration seçeneği için configuration bağımsız değişkenini ayarlar.