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
registerPublisheryö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
unregisterPublisheryö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_typedeğeriSUBSCRIPTIONolarak ayarlanmışsa Telemetri hizmeti, yayıncıya abone olmak içincreateSubscriptionişlevini çağırır. Yayıncınıza iletilenISubscriberbağımsız değişkeni, Telemetri hizmetine protobuf mesajları aktarmak için kullanabileceğiniz birsendData(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_typedeğeriON_DEMANDolarak ayarlanmışsa Telemetri hizmeti, yayıncının en son mesajını getirmek içingetLatestMessageişlevini çağırır. Telemetri hizmeti bu yöntemi yalnızca yayıncınınPublisherInfodeğerisupportsGet = trueise 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.