Durable Streams 를 보고 좋은 프로젝트라고 생각해서 제 주력 언어인 java 의 구현체도 만들어봤습니다.

주요 특징

  • 특정 라이브러리 종속성 최소화: 최대한 특정 프레임워크나 특정 라이브러리에 종속되지 않는 구조로 가능한 한 커스터마이즈 가능하면서도 기본 구현을 제공하는 형태로 만들었습니다.
  • Virtual thread 최적화: 자바 17 이상에서 사용가능하지만 Java 21 이상에서 Virtual thread와 함께 사용하시는걸 추천드립니다.
  • 주요 JVM 프레임워크 통합: Spring MVC, Spring WebFlux, Micronaut, Quarkus, Ktor 용 어댑터를 제공합니다. 각 프레임워크에 맞는 요청/응답 변환과 SSE 처리를 내장하고 있어서 단 몇줄의 설정만으로 바로 사용할 수 있습니다.
  • 프로토콜 적합성 테스트 통과: durable-streams 리포지토리에서 제공하는 131개의 적합성 테스트를 모두 통과했습니다.

주의사항

파일시스템 기반 스토리지는 메타데이터 보관용으로 Rocksdb를 사용합니다. Rocksdb는 최근 모든 주요 OS의 바이너리를 포함한 fat jar를 제공하는 방식에서 각 OS별 최적화된 jar를 classifier를 통해 직접 선택하는 방식으로 바뀌었습니다.
이에 따라 파일시스템 기반 스토리지를 사용하시려면 rocksdb를 직접 의존성에 추가하셔야합니다.

예시

gradle

dependencies {  
    implementation("io.durablestreams:durable-streams-server-core:<version>")  
    runtimeOnly("org.rocksdb:rocksdbjni:10.4.2:linux64") // or win64/osx  
}  

maven

<dependency>  
  <groupId>org.rocksdb</groupId>  
  <artifactId>rocksdbjni</artifactId>  
  <version>10.4.2</version>  
  <classifier>linux64</classifier>  
  <scope>runtime</scope>  
</dependency>