in graphql-dgs-spring-boot-micrometer/src/main/kotlin/com/netflix/graphql/dgs/metrics/micrometer/DgsGraphQLMicrometerAutoConfiguration.kt [53:139]
open fun metricsInstrumentation(
dgsSchemaProvider: DgsSchemaProvider,
meterRegistrySupplier: DgsMeterRegistrySupplier,
tagsProvider: DgsGraphQLMetricsTagsProvider,
properties: DgsGraphQLMetricsProperties,
limitedTagMetricResolver: LimitedTagMetricResolver,
optQuerySignatureRepository: Optional<QuerySignatureRepository>,
): DgsGraphQLMetricsInstrumentation =
DgsGraphQLMetricsInstrumentation(
schemaProvider = dgsSchemaProvider,
registrySupplier = meterRegistrySupplier,
tagsProvider = tagsProvider,
properties = properties,
limitedTagMetricResolver = limitedTagMetricResolver,
optQuerySignatureRepository = optQuerySignatureRepository,
autoTimer = PropertiesAutoTimer(properties.autotime),
)
@Bean
@ConditionalOnProperty(
prefix = "$AUTO_CONF_PREFIX.data-loader-instrumentation",
name = ["enabled"],
havingValue = "true",
matchIfMissing = true,
)
open fun dataLoaderInstrumentationProvider(meterRegistrySupplier: DgsMeterRegistrySupplier): DgsDataLoaderInstrumentationProvider =
DgsDataLoaderInstrumentationProvider(meterRegistrySupplier)
@Bean
open fun collatedMetricsTagsProvider(
contextualTagCustomizer: Collection<DgsContextualTagCustomizer>,
executionTagCustomizer: Collection<DgsExecutionTagCustomizer>,
fieldFetchTagCustomizer: Collection<DgsFieldFetchTagCustomizer>,
): DgsGraphQLMetricsTagsProvider =
DgsGraphQLCollatedMetricsTagsProvider(
contextualTagCustomizer,
executionTagCustomizer,
fieldFetchTagCustomizer,
)
@Bean
@ConditionalOnMissingBean
open fun spectatorLimitedTagMetricResolve(properties: DgsGraphQLMetricsProperties): LimitedTagMetricResolver =
SpectatorLimitedTagMetricResolver(properties.tags)
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(DgsGraphQLMetricsProperties::class)
open class MetricsPropertiesConfiguration
@Configuration
@ConditionalOnProperty(
prefix = AUTO_CONF_QUERY_SIG_PREFIX,
name = ["enabled"],
havingValue = "true",
matchIfMissing = true,
)
open class QuerySignatureRepositoryConfiguration {
companion object {
const val AUTO_CONF_QUERY_SIG_CACHING_PREFIX = "$AUTO_CONF_QUERY_SIG_PREFIX.caching"
}
@Bean
@ConditionalOnMissingBean(value = [QuerySignatureRepository::class])
@ConditionalOnProperty(
prefix = AUTO_CONF_QUERY_SIG_CACHING_PREFIX,
name = ["enabled"],
havingValue = "true",
matchIfMissing = true,
)
open fun querySignatureCacheableRepository(
properties: DgsGraphQLMetricsProperties,
meterRegistrySupplier: DgsMeterRegistrySupplier,
optCacheManager: Optional<CacheManager>,
): QuerySignatureRepository =
CacheableQuerySignatureRepository(
autoTimer = PropertiesAutoTimer(properties.autotime),
meterRegistrySupplier = meterRegistrySupplier,
optionalCacheManager = optCacheManager,
)
@Bean
@ConditionalOnMissingBean(value = [QuerySignatureRepository::class])
open fun simpleQuerySignatureRepository(
properties: DgsGraphQLMetricsProperties,
meterRegistrySupplier: DgsMeterRegistrySupplier,
): QuerySignatureRepository = SimpleQuerySignatureRepository(PropertiesAutoTimer(properties.autotime), meterRegistrySupplier)
}