문서 탐색 열기
R2D1 / 문서

Micronaut 5

r2d1-micronaut는 Micronaut-managed resource로 framework-neutral R2D1 bean을 조건부 생성하는 선택적인 통합 모듈입니다. base r2d1 artifact에 Micronaut API를 추가하지 않습니다.

Dependency와 runtime

Micronaut 5 통합은 현재 Java 25가 필요합니다. core와 JDBC artifact는 Java 21 대상으로 유지됩니다. JDBC index를 사용하면 r2d1-jdbc와 애플리케이션이 선택한 JDBC driver도 추가하세요.

implementation("dev.nexcraft:r2d1-micronaut:<version>")

Integration 활성화

r2d1.enabled=true가 아니면 integration은 비활성화됩니다. R2D1을 eager하게 만들기 때문에 불완전한 설정은 startup 중 실패합니다. index type은 jdbc 또는 d1입니다.

r2d1:
  enabled: true
  index:
    type: jdbc
  jdbc:
    datasource: default
    execution-mode: platform-thread
    max-concurrency: 4
    max-pending: 64

datasources:
  default:
    url: jdbc:h2:file:./data/r2d1

Cloudflare 설정

r2와 d1 설정은 framework-neutral adapter와 같은 경계를 사용합니다. secret-bearing configuration의 toString은 값을 가립니다.

r2d1:
  enabled: true
  index:
    type: d1
  r2:
    endpoint: https://<account-id>.r2.cloudflarestorage.com
    access-key-id: ${R2_ACCESS_KEY_ID}
    secret-access-key: ${R2_SECRET_ACCESS_KEY}
    bucket-name: documents
    region: auto
  d1:
    account-id: ${CLOUDFLARE_ACCOUNT_ID}
    database-id: ${CLOUDFLARE_D1_DATABASE_ID}
    api-token: ${CLOUDFLARE_D1_API_TOKEN}

Resource ownership

애플리케이션이 unique 또는 @Primary S3AsyncClient나 Java HttpClient를 제공하면 integration은 이를 borrow하고 닫지 않습니다. 그렇지 않으면 integration이 만든 adapter resource를 소유하고 닫습니다.

r2d1.jdbc.executor가 애플리케이션 소유 Executor를 가리키면 Micronaut는 bounded admission만 감싸고 executor를 종료하지 않습니다. 외부 executor와 execution-mode를 함께 설정하지 마세요.

integration은 DataSource, connection pool 또는 database server를 시작하거나 닫지 않습니다.

Override와 native image

애플리케이션 bean이 R2D1, CollectionFactory, DocumentStore, IndexStore, DocumentCodec와 initializer 순서로 integration bean보다 우선합니다.

검증된 native smoke path는 H2 JDBC backend를 사용하는 Micronaut ApplicationContext입니다. native image의 document type에는 @ReflectiveAccess 같은 명시적 reflection registration이 필요할 수 있으며, R2와 D1 native runtime은 검증된 지원 경로가 아닙니다.

이 모듈은 Micronaut Data repository, HTTP endpoint, metrics, tracing, Spring compatibility, R2DBC, retry policy, database-server lifecycle을 제공하지 않습니다.