Message Pull
Pub/Sub 서비스에서 서브스크립션 타입 Pull을 생성한 경우, 사용자가 서브스크립션에 메시지를 전송 요청하고 메시지를 정상 수신한 후 확인 응답이 필요합니다.
안내
전송 요청을 위해서는 액세스 키 ID와 액세스 보안 키를 발급해야 합니다.
- 카카오 i 클라우드 콘솔 > 사용자 프로필 > 사용자 액세스 키 탭에서 사용자의 자격 증명을 위한 사용자 액세스 키(액세스 키 ID, 보안키)를 발급받을 수 있습니다.
주요 개념
Pull의 주요 개념은 다음과 같습니다.
표 Pull 주요 개념
주요 개념 | 설명 |
---|---|
서브스크립션 타입 | Pull : 사용자가 메시지 전송을 요청 |
응답 대기 시간 | 메시지 응답까지 대기하는 시간 - 시간 범위: 10-600초(10분) 이내 설정 |
확인 응답 | 응답 대기 시간 안에 Response code 200이 없는 경우, 메시지 재전송 |
API 엔드포인트 URL
API 사용을 위한 Pub/Sub 엔드포인트 URL은 다음과 같습니다.
코드 예제 Web API 엔드포인트 URL 형식
https://pub-sub.kr-central-1.kakaoi.io
안내
Pub/Sub API는 현재 kr-central-1 리전에서만 제공됩니다.
Pull
서브스크립션에 요청할 메시지를 설정합니다.
Request Syntax
코드 예제 메시지 요청 Request Syntax
curl -k --location --request POST 'https://pub-sub.kr-central-1.kakaoi.io/pub-sub/kic-event/v1/projects/353094e122d6493d9899f0f2523d4cc1/subscriptions/peb-test-pull-subs/pull' \
--header "Credential-ID: ****" \
--header "Credential-Secret: ****" \
--header 'Content-Type: application/json' \
--data-raw '{
"maxMessages": 1
}'
API 호출 방식
메서드 | 요청 URL |
---|---|
POST | /pub-sub/kic-event/v1/projects/{project-id}/subscriptions/{subscription-name}/pull |
Path | 타입 | 필수 여부 | 설명 |
---|---|---|---|
project-id | String | 필수 | Kakao i Cloud 프로젝트 이름(고유 ID) - 콘솔 상단에서 확인 가능 |
subscription-name | String | 필수 | 서브스크립션의 이름 |
Request Header
Request | 타입 | 필수 여부 | 설명 |
---|---|---|---|
Credential-ID | String | 필수 | 사용자 액세스 Key ID |
Credential-Secret | String | 필수 | 사용자 액세스 보안 Key |
Request Elements
Request | 타입 | 설명 |
---|---|---|
maxMessages | Integer | 최대 메시지 요청 수, 1개 ~ 4,096개 |
Response Syntax
코드 예제 메시지 요청 Response Syntax
{
"receivedMessages": [
{
"ackId": "Ifaswn660rXu8FZdE2ki7upOjG4pI3Q3eaqNHJxIOXZ4Abj5VpCQRXm/EPoxDHTgImaXz8HK7P5l1rmhLoSJaf0Q330DO10BivvG+yt4sEGMGLc5wB4VKACuzGDTFOAyhFAkualNoKqZLyzQYAJuILZeZfO7BUBmmMkS3O+pZlMvxmthpyDrNnyUmLBb2uXlzig5kBWh0ZFWegioX7nLs/uODqMhlj2U2qEX6E33q0R9qEuJjv4HWEnVRjrTUdrRV6fiahbf7gnH68jN9f0+MisPBqPLzpQBj+eyqt2BZAq9J2cn70I5lzErIpxMBPXwfmM4sF7MhtyvaNvAbq9Sm02IVOIwxHDsoON/yjggIVeY5g+6XvKQgq5/jg==",
"message": {
"data": "eyJldmVudF92ZXJzaW9uIjoiMS4wLjAiLCJldmVudF9pZCI6InRyYWlsXzBfNjAzNDUyNjY2XzE2Njg0MTQzNTAzMzQiLCJldmVudF9uYW1lIjoiS2V5cGFpciBjcmVhdGUiLCJldmVudF9zb3VyY2UiOiJWaXJ0dWFsIG1hY2hpbmUiLCJldmVudF90aW1lIjoiMjAyMi0xMS0xNFQwODoyNTo1MC4zMzRaIiwia2ljX3JlZ2lvbiI6Ii0iLCJkb21haW5faWQiOiI5ODJmYzM5MjY5OWQ0Mzg1YjBiMWE5ZDEwYjlmMjM5MyIsImRvbWFpbl9uYW1lIjoia2FrYW9lbnRlcnByaXNlIiwicHJvamVjdF9pZCI6IjM1MzA5NGUxMjJkNjQ5M2Q5ODk5ZjBmMjUyM2Q0Y2MxIiwicHJvamVjdF9uYW1lIjoiYmlnZGF0YSIsInJlc291cmNlX25hbWUiOiJwcHBwcGViIiwicmVzb3VyY2VfaWQiOiItIiwicmVzb3VyY2VfdHlwZSI6IktleXBhaXIiLCJ1c2VyX2lkIjoiY2Q3MGU1M2JkNGYxNDFkM2FhYjZmNjUyOGNjNGM0N2MiLCJ1c2VyX25hbWUiOiJwZWIubGVlQGtha2FvZW50ZXJwcmlzZS5jb20iLCJ1c2VyX2FnZW50IjoiLSIsInNvdXJjZV9pcF9hZGRyZXNzIjoiMTAuMTg3LjcwLjEzMyIsIm90aGVyX2FkZGl0aW9uYWxfaW5mbyI6Int9In0=",
"messageId": "1430458965141036376811744864924447649781668345309",
"publishTime": "2022-11-13T13:15:09Z"
},
"deliveryAttempt": 1
}
]
}
}
Response Elements
Response | 타입 | 설명 |
---|---|---|
ackId | String | 메시지 요청 후 확인에 사용되는 ackIds 값 |
message | Object | 메시지 상세값 |
data | String | 이벤트 로그, Base64 인코딩 처리 |
messageId | String | 메시지 고유 아이디 |
publishTime | String | 메시지 발생 시각 |
deliveryAttempt | Integer | 메시지 전송을 시도한 수 |
Status Code
HTTP Status | 설명 |
---|---|
200 | 성공 |
400 | 요청 정보 오류 |
401, 403 | 인증 실패, 권한 없음 |
404 | 서브스크립션를 찾을 수 없음 |
Acknowledge
메시지가 정상적으로 수신된 경우, 확인 응답을 할 수 있습니다.
Request Syntax
코드 예제 메시지 확인 응답 Request Syntax
curl -k --location --request POST 'https://pub-sub.kr-central-1.kakaoi.io/pub-sub/kic-event/v1/projects/353094e122d6493d9899f0f2523d4cc1/subscriptions/peb-test-pull-subs/acknowledge' \
--header "Credential-ID: 924faa3684e4446eaed3de49b10e3afa" \
--header "Credential-Secret: zMTsIHAR-TbF_pUndY-DR5mtvvhpQ6KVgKQJzKf79s8R3wPDVHjVeNjDVbn7LzH0YFNPMyLq8-t6tlMjd7J74Q" \
--header 'Content-Type: application/json' \
--data-raw '{
"ackIds": [
"Ifaswn660rXu8FZdE2ki7upOjG4pI3Q3eaqNHJxIOXZ4Abj5VpCQRXm/EPoxDHTgImaXz8HK7P5l1rmhLoSJaf0Q330DO10BivvG+yt4sEGMGLc5wB4VKACuzGDTFOAyhFAkualNoKqZLyzQYAJuILZeZfO7BUBmmMkS3O+pZlMvxmthpyDrNnyUmLBb2uXlzig5kBWh0ZFWegioX7nLs/uODqMhlj2U2qEX6E33q0R9qEuJjv4HWEnVRjrTUdrRV6fiahbf7gnH68jN9f0+MisPBqPLzpQBj+eyqt2BZAq9J2cn70I5lzErIpxMBPXwfmM4sF7MhtyvaNvAbq9Sm02IVOIwxHDsoON/yjggIVeY5g+6XvKQgq5/jg=="
]
}'
API 호출 방식
메서드 | 요청 URL |
---|---|
POST | /pub-sub/kic-event/v1/projects/{project-id}/subscriptions/{subscription-name}/acknowledge |
Path | 타입 | 필수 여부 | 설명 |
---|---|---|---|
project-id | String | 필수 | Kakao i Cloud 프로젝트 이름(고유 ID) - 콘솔 상단에서 확인 가능 |
subscription-name | String | 필수 | 서브스크립션의 이름 |
Request Header
Request | 타입 | 필수 여부 | 설명 |
---|---|---|---|
Credential-ID | String | 필수 | 사용자 액세스 Key ID |
Credential-Secret | String | 필수 | 사용자 액세스 보안 Key |
Request Elements
Request | 타입 | 설명 |
---|---|---|
ackIds | [String] | 메시지 요청 후 확인한 ackIds 값 |
Status Code
HTTP Status | 설명 |
---|---|
200 | 성공 |
400 | 요청 정보 오류 |
401, 403 | 인증 실패, 권한 없음 |
404 | 서브스크립션를 찾을 수 없음 |