발송 속도 향상을 위해 LGCNS 에이전트를 여러 대 설치한 환경에서, 발송 요청의 서비스 ID를 기준으로 요청을 처리할 에이전트 테이블을 분배하는 방법을 설명합니다. LGCNS 에이전트 설정파일(agent.ini)에 발송 서비스아이디 설정시 여러대의 에이전트를 설치시 동일 서비스아이디를 셋팅할 수 없습니다. 이에 따라 해당 발송요청한 서비스아이디에 의해 분배처리를 하기 위한 설정입니다.
분배 기준은 다음과 같습니다.
| 채널 | 분배 기준 발송 파라미터 |
|---|---|
| 알림톡 | KKOALT_SVCID |
| 브랜드 메시지(구 친구톡) | KKOFRT_SVCID |
다음 설정 파일 중 하나에 서비스 ID 분배 설정을 추가합니다.
common.propertiesprovider.properties참고
UMS 엔진
3.5.x.x이상 버전부터 공급사 설정 정보가common.properties에서 분리되어provider.properties에 저장됩니다.
설정 위치에는 제한이 없지만, 관리 편의를 위해 LGCNS 공급사 설정 하단에 추가하는 것을 권장합니다.
서비스 ID 분배 설정은 발송 파라미터 TRANS_TYPE(REAL or BATCH)에 따라 분배 테이블을 결정하는 KKOALT.DIVISION.TABLE 설정보다 우선 적용됩니다.
즉, 서비스 ID 분배 설정이 존재하면 다음 순서로 발송 테이블이 결정됩니다.
설정값은 다음 JSON 구조를 사용합니다.
{"LGCNS": {"서비스ID": "에이전트가 처리할 발송요청 테이블"}}
# 기본 REAL/BATCH 테이블 설정
KKOALT.DIVISION.TABLE = {"LGCNS":{"REAL":"TSMS_AGENT_MESSAGE_REAL_1", "BATCH":"TSMS_AGENT_MESSAGE_BATCH_1"}}
# 서비스ID별 발송 테이블 매핑
KKOALT.DIVISION.SVCID = {\
"LGCNS":{\
"0001":"TSMS_AGENT_MESSAGE_REAL_1",\
"0002":"TSMS_AGENT_MESSAGE_REAL_2",\
"0003":"TSMS_AGENT_MESSAGE_REAL_1",\
"0004":"TSMS_AGENT_MESSAGE_REAL_2",\
"0005":"TSMS_AGENT_MESSAGE_BATCH_1",\
"0006":"TSMS_AGENT_MESSAGE_BATCH_2",\
"0007":"TSMS_AGENT_MESSAGE_BATCH_1",\
"0008":"TSMS_AGENT_MESSAGE_BATCH_2"\
}\
}
서비스 ID별 분배 결과는 다음과 같습니다.
| 서비스 ID | 발송 요청 테이블 |
|---|---|
0001 |
TSMS_AGENT_MESSAGE_REAL_1 |
0002 |
TSMS_AGENT_MESSAGE_REAL_2 |
0003 |
TSMS_AGENT_MESSAGE_REAL_1 |
0004 |
TSMS_AGENT_MESSAGE_REAL_2 |
0005 |
TSMS_AGENT_MESSAGE_BATCH_1 |
0006 |
TSMS_AGENT_MESSAGE_BATCH_2 |
0007 |
TSMS_AGENT_MESSAGE_BATCH_1 |
0008 |
TSMS_AGENT_MESSAGE_BATCH_2 |
KKOFRT.DIVISION.SVCID= {\
"LGCNS":{\
"0011":"TSMS_AGENT_FT_REAL_1",\
"0012":"TSMS_AGENT_FT_REAL_2",\
"0013":"TSMS_AGENT_FT_BATCH_1",\
"0014":"TSMS_AGENT_FT_BATCH_2"\
}\
}
에이전트의 config.xml 파일에서 채널별로 다음 항목을 설정합니다.
<sendTable>: LGCNS 에이전트가 처리할 발송 요청 테이블<resultTable>: LGCNS 에이전트가 발송 결과를 저장할 테이블<serviceId>: 서비스 ID별 발송 요청 테이블<sendTable>과 <resultTable>은 하나의 쌍으로 구성합니다.
<sendTable>과 <resultTable>은 LGCNS 에이전트가 처리하는 모든 테이블을 정의해야 한다
**중요) 에이전트가 처리하는 발송 요청 테이블과 발송 결과 테이블의 개수가 서로 일치해야 합니다.
<serviceId>에 지정하는 발송 요청 테이블은 해당 에이전트가 처리할 수 있도록 <sendTable> 구성에도 포함되어 있어야 합니다.
<serviceId> 설정 여부에 따라 발송 테이블 결정 기준이 달라집니다.
| 설정 상태 | 발송 테이블 결정 기준 |
|---|---|
<serviceId> 설정 없음 |
발송 파라미터 TRANS_TYPE의 REAL 또는 BATCH 값 |
<serviceId> 설정 있음 |
알림톡의 KKOALT_SVCID 또는 브랜드 메시지의 서비스 ID |
서비스 ID 설정이 존재하는 경우에는 TRANS_TYPE보다 서비스 ID를 기준으로 발송 테이블을 우선 결정합니다.
다음은 config.xml의 <channelTable> 설정 예제입니다.
<channelTable>
<!-- 알림톡 -->
<kkoAlt>
<sendTable>
{
"LGCNS": {
"REAL1": "TSMS_AGENT_MESSAGE_REAL_1",
"REAL2": "TSMS_AGENT_MESSAGE_REAL_2",
"BATCH1": "TSMS_AGENT_MESSAGE_BATCH_1",
"BATCH2": "TSMS_AGENT_MESSAGE_BATCH_2"
}
}
</sendTable>
<resultTable>
{
"LGCNS": {
"REAL1": "TSMS_AGENT_MESSAGE_REAL_1_LOG",
"REAL2": "TSMS_AGENT_MESSAGE_REAL_2_LOG",
"BATCH1": "TSMS_AGENT_MESSAGE_BATCH_1_LOG",
"BATCH2": "TSMS_AGENT_MESSAGE_BATCH_2_LOG"
}
}
</resultTable>
<serviceId>
{
"LGCNS":{
"0001":"TSMS_AGENT_MESSAGE_REAL_1",
"0002":"TSMS_AGENT_MESSAGE_REAL_2",
"0003":"TSMS_AGENT_MESSAGE_REAL_1",
"0004":"TSMS_AGENT_MESSAGE_REAL_2",
"0005":"TSMS_AGENT_MESSAGE_BATCH_1",
"0006":"TSMS_AGENT_MESSAGE_BATCH_2",
"0007":"TSMS_AGENT_MESSAGE_BATCH_2",
"0008":"TSMS_AGENT_MESSAGE_BATCH_2"
}
}
</serviceId>
</kkoAlt>
<!-- 브랜드 메시지(구 친구톡) -->
<kkoFrt>
<sendTable>
{
"LGCNS": {
"REAL1": "TSMS_AGENT_FA_REAL_1",
"REAL2": "TSMS_AGENT_FA_REAL_2",
"BATCH1": "TSMS_AGENT_FA_BATCH_1",
"BATCH2": "TSMS_AGENT_FA_BATCH_2"
}
}
</sendTable>
<resultTable>
{
"LGCNS": {
"REAL1": "TSMS_AGENT_FA_REAL_1_LOG",
"REAL2": "TSMS_AGENT_FA_REAL_2_LOG",
"BATCH1": "TSMS_AGENT_FA_BATCH_1_LOG",
"BATCH2": "TSMS_AGENT_FA_BATCH_2_LOG"
}
}
</resultTable>
<serviceId>
{
"LGCNS":{
"0001":"TSMS_AGENT_FA_REAL_1",
"0002":"TSMS_AGENT_FA_REAL_2",
"0003":"TSMS_AGENT_FA_REAL_1",
"0004":"TSMS_AGENT_FA_REAL_2",
"0005":"TSMS_AGENT_FA_BATCH_1",
"0006":"TSMS_AGENT_FA_BATCH_2",
"0007":"TSMS_AGENT_FA_BATCH_1",
"0008":"TSMS_AGENT_FA_BATCH_2"
}
}
</serviceId>
</kkoFrt>
</channelTable>
주의
위 예제의
<serviceId>에 지정된 테이블명과<sendTable>에 지정된 테이블명이 서로 다릅니다. 실제 적용 시<serviceId>의 각 테이블이 해당 에이전트의<sendTable>구성에 포함되도록 운영 환경의 실제 테이블명에 맞게 수정해야 합니다.
08:23:33.015 [RMI TCP Connection(2)-127.0.0.1] INFO kr.uracle.ums.core.extention.service.division.DivisionRollManager - KKOALT 멀티 발송테이블 JSON 로드 완료 : {LGCNS={REAL=TSMS_AGENT_MESSAGE_REAL_1, BATCH=TSMS_AGENT_MESSAGE_BATCH_1}} 08:23:33.015 [RMI TCP Connection(2)-127.0.0.1] INFO kr.uracle.ums.core.extention.service.division.DivisionRollManager - KKOALT 서비스ID별 발송테이블 JSON 로드 완료 : {LGCNS={0001=TSMS_AGENT_MESSAGE_REAL_1, 0002=TSMS_AGENT_MESSAGE_REAL_2, 0003=TSMS_AGENT_MESSAGE_REAL_1, 0004=TSMS_AGENT_MESSAGE_REAL_2, 0005=TSMS_AGENT_MESSAGE_BATCH_1, 0006=TSMS_AGENT_MESSAGE_BATCH_2, 0007=TSMS_AGENT_MESSAGE_BATCH_1, 0008=TSMS_AGENT_MESSAGE_BATCH_2}}
08:02:31.330 [main] INFO [kr.uracle.ums.agent.extention.service.division.DivisionRollManager] - 동적 발송테이블 설정 로드 완료 - channelProviderTable: {"KKOALT":{"LGCNS":{"REAL1":"TSMS_AGENT_MESSAGE_REAL_1","REAL2":"TSMS_AGENT_MESSAGE_REAL_2","BATCH1":"TSMS_AGENT_MESSAGE_BATCH_1","BATCH2":"TSMS_AGENT_MESSAGE_BATCH_2"}}} 08:02:31.331 [main] INFO [kr.uracle.ums.agent.extention.service.division.DivisionRollManager] - 서비스ID별 발송테이블 설정 로드 완료 - channelServiceIdTable: {"KKOALT":{"LGCNS":{"0001":"TSMS_AGENT_MESSAGE_REAL_1","0002":"TSMS_AGENT_MESSAGE_REAL_2","0003":"TSMS_AGENT_MESSAGE_REAL_1","0004":"TSMS_AGENT_MESSAGE_REAL_2","0005":"TSMS_AGENT_MESSAGE_BATCH_1","0006":"TSMS_AGENT_MESSAGE_BATCH_2","0007":"TSMS_AGENT_MESSAGE_BATCH_1","0008":"TSMS_AGENT_MESSAGE_BATCH_2"}}}
KKOALT.DIVISION.SVCID 또는 KKOFRT.DIVISION.SVCID의 JSON 형식이 올바른가?<sendTable>과 <resultTable>의 테이블 개수가 일치하는가?<serviceId>에 지정한 테이블이 해당 에이전트의 <sendTable> 구성에 포함되어 있는가?발송 요청 수신
↓
서비스 ID 분배 설정 존재 여부 확인
↓
서비스 ID와 매핑된 발송 요청 테이블 선택
↓
해당 테이블을 처리하는 LGCNS 에이전트가 발송 수행
↓
매칭되는 발송 결과 테이블에 처리 결과 저장