Java SDK 개요
사전 작업
Pub/Sub에서 제공하는 SDK를 사용하기 위해서는 다음의 사전 작업을 수행해야 합니다.
액세스 키 발급하기
사용자 인증 토큰(API 인증 토큰)을 획득하기 위해서는 먼저 액세스 키를 발급받은 후, 액세스 키 ID와 보안 액세스 키를 발급합니다.
액세스 키를 발급받은 프로젝트에 속해있는 리소스에만 접근할 수 있습니다.
-
카카오클라우드 콘솔 > 사용자 프로필 > 액세스 키 탭에서 사용자의 자격 증명으로 액세스 키를 발급합니다.
-
사용자 액세스 Key를 발급한 후, API 사용 준비를 참고하여 액세스 키 ID와 보안 액세스 키를 발급합니다.
Java SDK 요구사항
SDK Java를 사용하기 위해서는 다음의 사전 요구사항을 충족해야 합니다.
-
JDK, Java 버전을 확인합니다.
- JDK 1.8 이상
- Java 8 이상
-
SDK Dependency를 추가합니다.
jar 파일 다운로드$ wget https://objectstorage.kr-central-1.kakaocloud.com/v1/e9130193fc734337b2b0c1da50e44395/pub-sub-java-sdk/v0.1.5/kc-pub-sub-0.1.5.jar
# 이후 사용하려는 프로젝트 하위 libs 폴더로 이동
$ mkdir {your-project}/libs
$ mv kc-pub-sub-0.1.5.jar {your-project}/libsMaven(pom.xml)<repositories>
<repository>
<id>java-pubsub</id>
<url>file://${project.basedir}/libs/kc-pub-sub-0.1.5.jar</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.kakaocloud.pubsub</groupId>
<artifactId>kc-pub-sub</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/kc-pub-sub-0.1.5.jar</systemPath>
</dependency>
</dependencies>Gradle(build.gradle)dependencies {
implementation files("$rootProject.projectDir/libs/kc-pub-sub-0.1.5.jar")
}안내kc-pub-sub-0.1.4.jar 이전 버전의 경우 아래와 같이 token server 변경이 필요합니다.
DefaultCredentialsProvider.newBuilder()
.setTokenServerUri("https://iam.kakaocloud.com")
.build();
PublisherStubSettings settings = PublisherStubSettings.newBuilder()
.setCredentialsProvider(provider)
.build();
SubscriberStubSettings settings = SubscriberStubSettings.newBuilder()
.setCredentialsProvider(provider)
.build(); -
액세스 키 발급하기를 참고하여 Credentials 키를 발급받습니다. 기본적으로 SDK에서는 액세스 키를 이용해 인증을 시도합니다. 인증은
CredentialsProvider
유형을 사용하며, 기본적으로 다음과 같이DefaultCredentialsProvider
에credential-id
,credential-secret
을 설정하여 사용합니다.Credentials 키를 사용한 예제DefaultCredentialsProvider provider = DefaultCredentialsProvider.newBuilder()
.setCredentialId("credentialId")
.setCredentialSecret("credentialSecret")
.build()
PublisherStubSettings settings = PublisherStubSettings.newBuilder()
.setCredentialsProvider(provider)
.build();
TopicAdminClient topicAdminClient = TopicAdminClient.create(settings);
Client
토픽과 서브스크립션을 조작하고 메시지를 전송 및 수신할 때 사용하는 객체입니다.
Client 객체는 스레드와 같은 리소스들을 해제시켜야 하므로, close()
메서드를 호출해야 합니다.
Sample 코드와 같이 try-with-resources를 사용하면 자동으로 이를 해제합니다.
사용자 지정 설정값
TopicAdminClient에서 인증 및 호출 앤드포인트 등과 같은 값은 PublisherStubSettings를 통해 관리합니다.
SubscriptionAdminClient에서 인증 및 호출 앤드포인트 등과 같은 값은 SubscriberStubSettings을 통해 관리합니다.
이때, Client 객체 생성 시 직접 StubSettings을 생성하여 사용자가 임의로 값을 설정할 수 있습니다.
Default endpoint는 kr-central-1 리전의 엔드포인트로, kr-central-2 사용 시에는 엔드포인트 변경이 필요합니다.
PublisherStubSettings settings =
PublisherStubSettings.newBuilder()
.setEndpoint("{endpoint-url}:10443")
.build();
TopicAdminClient topicAdminClient = TopicAdminClient.create(settings);
SubscriberStubSettings settings =
SubscriberStubSettings.newBuilder()
.setEndpoint("{endpoint-url}:10443")
.build();
SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create(settings);