-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration Reference
philipp-gatzka edited this page Dec 26, 2025
·
1 revision
Complete reference for all Graphite configuration options.
All configuration properties use the graphite prefix in your application.yml or application.properties.
graphite:
# Required: GraphQL endpoint URL
url: https://api.example.com/graphql
# Optional: Enable/disable the client (default: true)
enabled: true
# Optional: Client name for metrics tagging
client-name: my-graphql-clientStatic headers are added to every request:
graphite:
headers:
Authorization: Bearer ${GRAPHQL_TOKEN}
X-API-Key: ${API_KEY}
Accept-Language: en-USFor dynamic headers, see Advanced-Usage#Request-Interceptors.
graphite:
timeout:
# Connection timeout - time to establish connection (default: 10s)
connect: 10s
# Read timeout - time waiting for response data (default: 30s)
read: 30s
# Overall request timeout - total time for entire request (default: 60s)
request: 60sAutomatic retry for transient failures with exponential backoff:
graphite:
retry:
# Enable/disable retry (default: true)
enabled: true
# Maximum number of retry attempts (default: 3)
max-attempts: 3
# Initial delay between retries (default: 100ms)
initial-delay: 100ms
# Backoff multiplier - each retry waits multiplier * previous delay (default: 2.0)
multiplier: 2.0
# Maximum delay between retries (default: 5s)
max-delay: 5sRetries are triggered for:
- Connection failures
- HTTP 5xx responses
- Request timeouts
Retries are not triggered for:
- HTTP 4xx responses
- GraphQL errors in the response body
Prevent overwhelming the GraphQL server:
graphite:
rate-limit:
# Enable/disable rate limiting (default: false)
enabled: true
# Maximum requests per second (default: 100)
requests-per-second: 100
# Burst capacity - allows temporary bursts above rps (default: same as rps)
burst-capacity: 150Configure the HTTP connection pool:
graphite:
connection-pool:
# Maximum concurrent connections (default: 50)
max-connections: 50
# Idle connection timeout (default: 30s)
idle-timeout: 30sConfigure HTTP connection pool metrics:
graphite:
metrics:
http:
# Enable/disable HTTP metrics (default: true)
enabled: truegraphite {
// Required: Path to the introspection schema JSON file
schemaFile = file("src/main/resources/graphql/schema.json")
// Required: Base package for generated code
packageName = "com.example.graphql"
// Optional: Output directory (default: build/generated/sources/graphite/main/java)
outputDir = layout.buildDirectory.dir("generated/sources/graphite/main/java")
// Optional: Generate nullable annotations (default: true)
generateNullableAnnotations = true
// Optional: Custom scalar mappings
scalars = mapOf(
"DateTime" to "java.time.Instant",
"Date" to "java.time.LocalDate",
"BigDecimal" to "java.math.BigDecimal"
)
}<configuration>
<!-- Required: Path to the introspection schema JSON file -->
<schemaFile>${project.basedir}/src/main/resources/graphql/schema.json</schemaFile>
<!-- Required: Base package for generated code -->
<packageName>com.example.graphql</packageName>
<!-- Optional: Output directory -->
<outputDirectory>${project.build.directory}/generated-sources/graphite</outputDirectory>
<!-- Optional: Generate nullable annotations -->
<generateNullableAnnotations>true</generateNullableAnnotations>
<!-- Optional: Custom scalar mappings -->
<scalars>
<DateTime>java.time.Instant</DateTime>
<Date>java.time.LocalDate</Date>
<BigDecimal>java.math.BigDecimal</BigDecimal>
</scalars>
</configuration>For advanced use cases, configure the client programmatically:
import io.github.graphite.GraphiteClient;
import io.github.graphite.GraphiteConfiguration;
import io.github.graphite.retry.RetryPolicy;
import io.github.graphite.ratelimit.RateLimitConfig;
import java.time.Duration;
GraphiteClient client = GraphiteClient.builder()
.endpoint(URI.create("https://api.example.com/graphql"))
.header("Authorization", "Bearer " + token)
.connectTimeout(Duration.ofSeconds(10))
.readTimeout(Duration.ofSeconds(30))
.requestTimeout(Duration.ofMinutes(1))
.retryPolicy(RetryPolicy.builder()
.maxAttempts(3)
.initialDelay(Duration.ofMillis(100))
.multiplier(2.0)
.maxDelay(Duration.ofSeconds(5))
.build())
.rateLimitConfig(RateLimitConfig.of(100, 150))
.build();All configuration properties can be overridden with environment variables:
# Format: GRAPHITE_<PROPERTY_PATH_WITH_UNDERSCORES>
GRAPHITE_URL=https://api.example.com/graphql
GRAPHITE_TIMEOUT_CONNECT=10s
GRAPHITE_RETRY_MAX_ATTEMPTS=5
GRAPHITE_HEADERS_AUTHORIZATION="Bearer ${TOKEN}"Use Spring profiles for environment-specific configuration:
# application.yml (common)
graphite:
timeout:
connect: 10s
---
# application-dev.yml
spring:
config:
activate:
on-profile: dev
graphite:
url: http://localhost:8080/graphql
retry:
enabled: false
---
# application-prod.yml
spring:
config:
activate:
on-profile: prod
graphite:
url: https://api.production.com/graphql
retry:
max-attempts: 5| Property | Type | Default | Description |
|---|---|---|---|
graphite.url |
String | - | GraphQL endpoint URL (required) |
graphite.enabled |
boolean | true |
Enable/disable the client |
graphite.client-name |
String | default |
Client name for metrics |
graphite.headers.* |
Map | {} |
Static request headers |
graphite.timeout.connect |
Duration | 10s |
Connection timeout |
graphite.timeout.read |
Duration | 30s |
Read timeout |
graphite.timeout.request |
Duration | 60s |
Overall request timeout |
graphite.retry.enabled |
boolean | true |
Enable retry |
graphite.retry.max-attempts |
int | 3 |
Max retry attempts |
graphite.retry.initial-delay |
Duration | 100ms |
Initial retry delay |
graphite.retry.multiplier |
double | 2.0 |
Backoff multiplier |
graphite.retry.max-delay |
Duration | 5s |
Maximum retry delay |
graphite.rate-limit.enabled |
boolean | false |
Enable rate limiting |
graphite.rate-limit.requests-per-second |
double | 100 |
Max requests/second |
graphite.rate-limit.burst-capacity |
int | 150 |
Burst capacity |
graphite.connection-pool.max-connections |
int | 50 |
Max connections |
graphite.connection-pool.idle-timeout |
Duration | 30s |
Idle timeout |
graphite.metrics.http.enabled |
boolean | true |
Enable HTTP metrics |
- User-Getting-Started - Quick start guide
- Advanced-Usage - Custom scalars, interceptors, and more
- Troubleshooting - Common issues and solutions