본문으로 건너뛰기

Java SDK 개요

사전 작업

Pub/Sub에서 제공하는 SDK를 사용하기 위해서는 다음의 사전 작업을 수행해야 합니다.

액세스 키 발급하기

사용자 인증 토큰(API 인증 토큰)을 획득하기 위해서는 먼저 액세스 키를 발급받은 후, 액세스 키 ID와 보안 액세스 키를 발급합니다.

주의

액세스 키를 발급받은 프로젝트에 속해있는 리소스에만 접근할 수 있습니다.

  1. 카카오클라우드 콘솔 > 사용자 프로필 > 액세스 키 탭에서 사용자의 자격 증명으로 액세스 키를 발급합니다.

  2. 사용자 액세스 Key를 발급한 후, API 사용 준비를 참고하여 액세스 키 ID와 보안 액세스 키를 발급합니다.

Java SDK 요구사항

SDK Java를 사용하기 위해서는 다음의 사전 요구사항을 충족해야 합니다.

  1. JDK, Java 버전을 확인합니다.

    • JDK 1.8 이상
    • Java 8 이상
  2. 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}/libs
    Maven(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();
  3. 액세스 키 발급하기를 참고하여 Credentials 키를 발급받습니다. 기본적으로 SDK에서는 액세스 키를 이용해 인증을 시도합니다. 인증은 CredentialsProvider 유형을 사용하며, 기본적으로 다음과 같이 DefaultCredentialsProvidercredential-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 사용 시에는 엔드포인트 변경이 필요합니다.

Sample. endpoint customizing
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);