MetadataExtractor

All lectures for UZ purposes
Daraja, Dars
Mavjud

So'rovchilar metadata-ni tushunishlari kerak. Yig'ma metadata metadata qiymatlarini mustaqil formatlash imkonini beradi (masalan, yo'naltirish, xavfsizlik, kuzatish maqsadlari uchun), har biri o'z MIME-turiga ega. Ilovalar uchun MIME-turlarini konfiguratsiya qilish yo'llari va chiqish qiymatlarini olish yo'llari kerak bo'ladi.

MetadataExtractor - bu serializatsiya qilingan metadata olish va dekodlangan "ism-qiymat" juftlarini qaytarish uchun shartnoma, keyin ular nom bilan murojaat qilish mumkin, masalan, @Header annotatsiyasi orqali annotatsiyalangan metodlarda.

DefaultMetadataExtractor metadata decoding uchun Decoder instansiyalariga berilishi mumkin. "Qutidan tashqarida" u "message/x.rsocket.routing.v0" amalda qilingan va "route" kaliti bilan saqlanadi. Har qanday boshqa MIME-tur uchun Decoder ko'rsatish va MIME-turini quyidagicha ro'yxatga olish kerak bo'ladi:

Java
DefaultMetadataExtractor extractor = new DefaultMetadataExtractor(metadataDecoders);
extractor.metadataToExtract(fooMimeType, Foo.class, "foo");
Kotlin
import org.springframework.messaging.rsocket.metadataToExtract
val extractor = DefaultMetadataExtractor(metadataDecoders)
extractor.metadataToExtract<Foo>(fooMimeType, "foo")

Yig'ma metadata mustaqil metadata qiymatlarini birlashtirish uchun yaxshi mos keladi. Biroq, so'rovchi yig'ma metadata-ni qo'llab-quvvatlamasligi yoki ishlatmasligi mumkin. Bunday holda, DefaultMetadataExtractor dekodlangan qiymatni Map produksiya qilish uchun qatorli logika kerak bo'lishi mumkin. Mana bir misol, metadata uchun JSON formatini ishlatish:

Java
DefaultMetadataExtractor extractor = new DefaultMetadataExtractor(metadataDecoders);
extractor.metadataToExtract(
MimeType.valueOf("application/vnd.myapp.metadata+json"),
new ParameterizedTypeReference<Map<String,String>>() {},
(jsonMap, outputMap) -> {
outputMap.putAll(jsonMap);
});
Kotlin
import org.springframework.messaging.rsocket.metadataToExtract
val extractor = DefaultMetadataExtractor(metadataDecoders)
extractor.metadataToExtract<Map<String, String>>(MimeType.valueOf("application/vnd.myapp.metadata+json")) { jsonMap, outputMap ->
outputMap.putAll(jsonMap)
}

MetadataExtractorni RSocketStrategies orqali konfiguratsiya qilishda RSocketStrategies.Builder ni dekoderlar bilan tuzilgan ekstraktor yaratishga ruxsat berish va ro'yxatga olish amallarini konfiguratsiya qilish uchun qayta chaqirishdan foydalanish mumkin:

Java
RSocketStrategies strategies = RSocketStrategies.builder()
.metadataExtractorRegistry(registry -> {
registry.metadataToExtract(fooMimeType, Foo.class, "foo");
// ...
})
.build();
Kotlin
import org.springframework.messaging.rsocket.metadataToExtract
val strategies = RSocketStrategies.builder()
.metadataExtractorRegistry { registry: MetadataExtractorRegistry ->
    registry.metadataToExtract<Foo>(fooMimeType, "foo")
    // ...
}
.build()
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION