부록 C.XPUSH 상세 설정

Edit

C.1xpush_config.xml

X-PUSH는 구동할 때, $XPUSH_HOME/conf/xpush_config.xml 을 참조합니다. 아래에선 설정 파일 내용의 서비스와 속성들에 대해 설명합니다.

XML 파일의 태그는 server, service, attribute, depends 등으로 이루어져 있으며 attribute 태그를 통해 설정의 제어가 이루어 집니다.

태그

설명

server

여러 서비스를 갖는 root 태그

service

xpush에서 사용될 서비스가 정의된 태그

attribute

서비스의 속성이 정의된 태그

depends

서비스 의존성 태그

- depends 태그를 통해 서비스의 구동 순서를 제어할 수 있습니다.

- 해당 서비스는 depends에 설정된 서비스가 구동 된 이후에 구동됩니다.

임의로 고정된 값을 변경하거나, 속성을 제거할 경우 시스템에 영향을 끼칠 수 있습니다.

C.1.1서비스

WebPublisher

WebPublisher 서비스는 WebClient의 연결 및 데이터의 처리를 수행합니다.

어트리뷰트

설명

ServerBindAddress

WebPublisher 서비스가 바인딩 될 주소

default : 0.0.0.0

Port

WebPublisher 서비스가 바인딩 될 포트

default : 10080

ProtocolServiceName

WebPublisher에서 사용할 프로토콜 서비스의 이름

CertificateServiceName

SSL 인증서가 설정된 서비스의 이름

IsHttps

HTTPS 사용 유무.

사용하기 위해서는 true로 세팅을 합니다.

HTTPS 를 사용하기 위해서는 CertificateService 세팅이 되어 있어야 합니다.

<service name="WebPublisher" ...>
    <attribute name="ServerBindAddress">0.0.0.0</attribute>
    <attribute name="Port">10080</attribute>
    <attribute name="ProtocolServiceName">
        #MiPlatformReliabilityNettyWithProjectIDProtocol
    </attribute>
    <attribute name="CertificateServiceName">#CertificateService</attribute>
    <attribute name="IsHttps">false</attribute>
    <depends>MiPlatformReliabilityNettyWithProjectIDProtocol</depends>
    <depends>CertificateService</depends>
    <depends>Publisher</depends>
    <depends>Log</depends>
</service>

RuntimePublisher

RuntimePublisher 서비스는 RuntimeClient의 연결 및 데이터의 처리를 수행합니다.

어트리뷰트

설명

ServerBindAddress

RuntimePublisher 서비스가 바인딩 될 주소

default : 0.0.0.0

Port

RuntimePublisher 서비스가 바인딩 될 포트

default : 10081

ProtocolServiceName

RuntimePublisher에서 사용할 프로토콜 서비스의 이름

CertificateServiceName

SSL 인증서가 설정된 서비스의 이름

IsSSL

SSL 연결 사용 유무.

사용하기 위해서는 true로 세팅을 합니다.

SSL 연결 를 사용하기 위해서는 CertificateService 세팅이 되어 있어야 합니다.

<service name="RuntimePublisher" ..>
    <attribute name="ServerBindAddress">0.0.0.0</attribute>
    <attribute name="Port">10081</attribute>
    <attribute name="ProtocolServiceName">
        #MiPlatformReliabilityNettyWithProjectIDProtocol
    </attribute>
    <attribute name="CertificateServiceName">#CertificateService</attribute>
    <attribute name="IsSSL">false</attribute>
    <depends>MiPlatformReliabilityNettyWithProjectIDProtocol</depends>
    <depends>CertificateService</depends>
    <depends>Publisher</depends>
    <depends>Log</depends>
</service>

CertificateService

CertificateService는 SSL 인증서 관련 처리를 수행하는 서비스입니다.

어트리뷰트

설명

Path

SSL 인증서 위치

Password

SSL 서버키

IsEncrypted

암호화 사용 유무

CertificatesPasswordEncryptorClassName

password 암호화/복호화 하기 위한 클래스 이름

<service name="CertificateService">

    <attribute name="Path">C:/xpush-2.8.0/conf/cacao.tobesoft.co.kr.jks</attribute>
    <attribute name="Password">1234567890</attribute>
    <attribute name="IsEncrypted">false</attribute>             

 <attribute name="CertificatesPasswordEncryptorClassName">com.nexacro.xpush.crypto.XPushPBEStringEncryptor</attribute>

</service>

Publisher

Publisher는 접속한 클라이언트의 관리 및 JMX 설정 등을 수행합니다.

서번트(Servant) : 하나의 클라이언트를 관리하는 객체

컨테이너(Container) : 서번트들을 관리하는 객체

어트리뷰트

설명

ProtocolServiceName

Publisher 서비스에서 사용하는 프로토콜 이름

PublishContainerFactoryServiceName

ContainerFactory 서비스 이름

ContainerNum

컨테이너 개수

ServantGarbageInterval

서번트의 Keep 메시지 유무 체크 기간

ThreadPoolCoreSize

삭제됨

ThreadPoolMaxSize

삭제됨

ThreadPoolKeepAliveTime

삭제됨

QueueServiceNames

메인 큐 서비스 이름

WebPort

사용되지 않음

SessionInterval

사용되지 않음

logFixLineCount

사용되지 않음

InsertMsgQueueServiceName

메시지 공급 큐 서비스 이름

NotificationQueueServiceName

알림 큐 서비스 이름

DbcpServiceName

DB 연결 서비스 이름

ServerBindAddress

JMX 모니터링 바인딩 주소

isJMX

JMX 사용 유무

IsJMXpassword

JMX 패스워드 사용 유무

JMXrmiRegistryPort

JMX rmi 등록 포트

JMXrmiServerPort

JMX rmi 서버 포트

IsSystemMonitor

시스템 데이터(CPU..등) 모니터링 유무

ConnectionManagerServiceName

클라이언트 연결 관리 서비스 이름

<service name="Publisher" >
    <attribute name="ProtocolServiceName">
        #MiPlatformReliabilityNettyWithProjectIDProtocol
    </attribute>        
    <attribute name="PublishContainerFactoryServiceName">
        #PublishContainerFactory
    </attribute>
    <attribute name="ContainerNum">10</attribute>
    <attribute name="ServantGarbageInterval">30000</attribute>
    <attribute name="ThreadPoolCoreSize">4</attribute>
    <attribute name="ThreadPoolMaxSize">8</attribute>
    <attribute name="ThreadPoolKeepAliveTime">86400000</attribute>
    <attribute name="QueueServiceNames">
        #MonitorablePushMessageQueueService
    </attribute>
    <attribute name="WebPort">-1</attribute>
    <attribute name="SessionInterval">600</attribute>
    <attribute name="LogFixLineCount">100</attribute>
    <attribute name="InsertMsgQueueServiceName">#InsertMsgQueue</attribute>
    <attribute name="NotificationQueueServiceName">
        #NotificationQueueService
    </attribute>
    <attribute name="DbcpServiceName">#DbcpService</attribute>
    <attribute name="ServerBindAddress">0.0.0.0</attribute>
    <attribute name="isJMX">false</attribute>
    <attribute name="IsJMXpassword">false</attribute>
    <attribute name="JMXrmiRegistryPort">10085</attribute>
    <attribute name="JMXrmiServerPort">10086</attribute>
    <attribute name="IsSystemMonitor">false</attribute>
    <depends>InsertMsgQueue</depends>
    <depends>NotificationQueueService</depends>
    <depends>MonitorablePushMessageQueueService</depends>
    <depends>MiPlatformReliabilityNettyWithProjectIDProtocol</depends>
    <depends>PublishContainerFactory</depends>
    <depends>DbcpService</depends>                        
    <depends>Log</depends>
    <attribute name="ConnectionManagerServiceName">
        #connectionManagerService
    </attribute>
    <depends>connectionManagerService</depends>
</service>

IsSystemMonitor 속성을 활성화 하려고 할 때, 운영체제에 따라 작동하지 않을 수 있습니다.

Servant Container 개수와 Container 별 Servant 개수

배포 시 설정된 기본값은 동시 접속 수 5,000개의 클라이언트에 대한 서비스를 전제로 설정된 값입니다. 이 값은 많은 성능 테스트를 통하여 구한 값입니다. 따라서 배포 시에 설정된 값을 사용할 것을 권장합니다.

5,000개 이상의 클라이언트 접속을 처리하기 위해서는 Servant Container의 개수와 Container 개수를 수정하여야 합니다.

Servant는 접속된 하나의 클라이언트를 관리하는 객체이고, Servant Container는 특정 개수의 Servant를 관리하는 객체입니다. 각각의 Servant Container는 개별 스레드로 동작하며, 클라이언트에 메시지를 전송하기 위해서 각 Servant Container가 메시지를 받으면 자신이 관리하는 모든 Servant에 대하여 차례대로 메시지를 전송합니다. 이렇게 개별적인 thread에 의해 동작하기 때문에 전체 Servant에 대한 전송이 끝나지 않아도 뒤이어 전달된 메시지를 처리할 수 있고, 결과적으로 처리 시간이 단축됩니다.

배포 시의 기본값은 10개의 Container와 500개의 Servant입니다. 한 개의 Servant Container가 500개의 Servant를 관리하기 때문에 총 5,000개(=Container 개수 * Servant 개수 = 10 * 500)의 클라이언트를 처리할 수 있습니다. 만약 5,000개의 사용자가 접속해 있을 때 새로운 연결이 요청되면 연결을 받아들이지 않고 거부합니다.

MonitorablePushMessageQueueService

MonitorablePushMessageQueueService는 실시간 및 신뢰성 메시지 전송을 대기하는 큐입니다.

어트리뷰트

설명

MaxCapacity

큐의 최대 용량

-1 이면 용량 제한이 없습니다.

<service name="MonitorablePushMessageQueueService">
    <attribute name="MaxCapacity">-1</attribute>
</service>

MiPlatformReliabilityNettyWithProjectIDProtocol

MiPlatformReliabilityNettyWithProjectIDProtocol은 서버와 클라이언트간의 프로토콜이 정의된 서비스입니다.

어트리뷰트

설명

AuthenticatorServiceName

프로토콜에서 사용하는 인증 서비스 이름

usedACKN

ACKN 사용여부

- ACKN은 넥사크로 엔진으로부터 응답받앗을 때 DB에 update 할 지 유무

usedURCV

개발 중인 사항

KeepAlive

keepAlive 메시지 유지 가능 시간

TimeOut

WebPush 쓰기 timeout 시간(초)

bufferingMaxDelay

삭제됨

bufferingMaxCount

삭제됨

SelectMsgQueueServiceName

클라이언트 미수신 메시지 요청 큐 이름

UpdateMsgQueueServiceName

클라이언트 수신 응답 메시지 큐 이름

AutoInsertTopic

subscribe 시 DB에 자동 토픽 등록 유무

UserRegister

자동 토픽 등록을 활성화할 때, user 등록 유무

insertTopicMsgQueueServiceName

유저 등록, 미수신 메시지 개수 조회 큐 이름

DbcpServiceName

DB 연결 서비스 이름

RepositoryServiceName

DB 저장소 서비스 이름

<service name="CertificateService">

    <attribute name="Path">C:/xpush-2.8.0/conf/cacao.tobesoft.co.kr.jks</attribute>
    <attribute name="Password">1234567890</attribute>
    <attribute name="IsEncrypted">false</attribute>             

 <attribute name="CertificatesPasswordEncryptorClassName">com.nexacro.xpush.crypto.XPushPBEStringEncryptor</attribute>

</service>

MiPlatformProtocolReliabilityAuthenticator

MiPlatformProtocolReliabilityAuthenticator은 클라이언트 관련 인증 서비스 처리를 수행합니다.

어트리뷰트

설명

AuthenticatorClassName

클라이언트 인증 클래스 경로

<service name="MonitorablePushMessageQueueService">
    <attribute name="MaxCapacity">-1</attribute>
</service>

PublisherContainerFactory

PublisherContainerFactory는 컨테이너 생성 서비스 입니다.

어트리뷰트

설명

RegisterContainer

컨테이너 등록 유무

MaxServantNum

컨테이너 당 서번트 최대 개수

ThreadPoolCoreSize

쓰레드 풀 최소 사이즈

ThreadPoolMaxSize

쓰레드 풀 최대 사이즈

ThreadPoolKeepAliveTime

쓰레드 풀 유지 시간

- 쓰레드 풀에 idle 쓰레드가 최소 크기보다 많은 경우 쓰레드 풀에 남아 있는 시간

QueueServiceName

컨테이너 큐 서비스 이름

<service name="PublishContainer">
    <attribute name="RegisterContainer">true</attribute>
    <attribute name="MaxServantNum">500</attribute>
    <attribute name="ThreadPoolCoreSize">8</attribute>
    <attribute name="ThreadPoolMaxSize">16</attribute>
    <attribute name="ThreadPoolKeepAliveTime">86400000</attribute>
    <attribute name="QueueServiceName">#ContainerQueue</attribute>
    <depends>
            <service name="ContainerQueue" ...>
                <attribute name="MaxCapacity">20000</attribute>
            </service>
    </depends>
    <depends>Log</depends>
    <depends>MonitorablePushMessageQueueService</depends>
</service>

ContainerQueue

컨테이너에서 메시지를 전달하기 위해 대기하는 큐

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="ContainerQueue">
    <attribute name="MaxCapacity">20000</attribute>
</service>

Provider

메시지 공급 서비스

어트리뷰트

설명

ServerBindAddress

Provider 서비스가 바인딩 될 주소

default: 0.0.0.0

Port

Provider 서비스가 바인딩 될 포트

default: 10082

SocketProviderProtocolName

Provider 서비스가 사용할 프로토콜 서비스 이름

CertificateServiceName

Provider 서비스가 사용할 인증서 서비스 이름

IsSSL

SSL 통신 사용 유무(개발 중)

<service name="Provider">
        <attribute name="ServerBindAddress">0.0.0.0</attribute>
        <attribute name="Port">10082</attribute>
        <attribute name="SocketProviderProtocolName">
            #SocketProviderJsonProtocol
        </attribute>
        <attribute name="CertificateServiceName">#CertificateService</attribute>
        <attribute name="IsSSL">false</attribute>
        <depends>SocketProviderJsonProtocol</depends>
        <depends>CertificateService</depends>
        <depends>SocketPushMessageProvider</depends>
        <depends>Log</depends>
</service>

SocketPushMessageProvider

Provider 서브 서비스

어트리뷰트

설명

SocketProviderProtocolName

Provider 서비스가 사용할 프로토콜 서비스 이름

QueueServiceNames

실시간 및 신뢰성 메시지 전송 관련 메인 큐 서비스 이름

<service name="SocketPushMessageProvider">
    <attribute name="SocketProviderProtocolName">
        #SocketProviderJsonProtocol
    </attribute>
    <attribute name="QueueServiceNames">
        #MonitorablePushMessageQueueService
    </attribute>
    <depends>MonitorablePushMessageQueueService</depends>
    <depends>SocketProviderJsonProtocol</depends>
    <depends>Log</depends>
</service>

SocketProviderJsonProtocol

Provider 프로토콜 서비스

어트리뷰트

설명

ProviderVersion

provider 프로토콜 버전

- 고정값

AuthenticatorServiceName

프로바이더 인증 서비스 이름

KeepAlive

Provider connect 유지 시간(사용하지 않음)

TimeOut

Write 데이터 timeout

MessageSize

신뢰성 메시지 크기 제한

NodeManagerServiceName

클러스터링 서비스 이름

NotificationQueueServiceName

모바일 알림 큐 서비스 이름

<service name="SocketProviderJsonProtocol">
    <attribute name="ProviderVersion">2</attribute>
    <attribute name="AuthenticatorServiceName">
        #SocketProviderProtocolAuthenticator
    </attribute>
    <attribute name="KeepAlive">60000</attribute>
    <attribute name="TimeOut">30000</attribute>
    <attribute name="MessageSize">4000</attribute>
    <attribute name="InsertMsgQueueServiceName">#InsertMsgQueue</attribute>
    <attribute name="NodeManagerServiceName">#nodeManagerService</attribute>
    <attribute name="NotificationQueueServiceName">
        #NotificationQueueService
    </attribute>
    <depends>NotificationQueueService</depends>            
    <depends>InsertMsgQueue</depends>
    <depends>nodeManagerService</depends>             
    <depends>Log</depends>
</service>

SocketProviderProtocolAuthenticator

Provider 인증 서비스 이름

어트리뷰트

설명

AuthenticatorClassName

인증에 사용될 클래스 이름

<service name="SocketProviderProtocolAuthenticator">
    <attribute name="AuthenticatorClassName">
        com.nexacro.xpush.fw.service.auth.UserProfileDummyAuthenticator
    </attribute>
</service>

PushMonitor

PushMonitor는 모니터링 관련 처리를 수행할 수 있는 서비스 입니다.

어트리뷰트

설명

MonitorProtocolServiceName

모니터링 서비스에서 사용할 프로토콜 서비스 이름

MonitorableStreamProviderServiceName

모니터링 서비스 출력 서비스 이름

ServerBindAddress

모니터링 서비스에서 바인딩 할 주소

Port

모니터링 서비스에서 바인딩 할 포트

deafult: 10083

QueueServiceNames

실시간 및 신뢰성 메시지 전송 관련 메인 큐 서비스 이름

<service name="PushMonitor">
    <attribute name="MonitorProtocolServiceName">#MonitorProtocol</attribute>
    <attribute name="MonitorableStreamProviderServiceName">
        #ConsoleLogWriter
    </attribute>
    <attribute name="ServerBindAddress">0.0.0.0</attribute>
    <attribute name="Port">10083</attribute>
    <attribute name="QueueServiceNames">
        #MonitorablePushMessageQueueService</attribute>
    <depends>MonitorProtocol</depends>
    <depends>MonitorablePushMessageQueueService</depends>
    <depends>Log</depends>
</service>

MonitorProtocol

MonitorProtocol은 PushMonitor 서비스에서 사용할 프로토콜이 정의된 서비스입니다.

어트리뷰트

설명

AuthenticatorServiceName

모니터링 인증 서비스 이름

DbcpServiceName

DB 연결 서비스 이름

<service name="MonitorProtocol">
    <attribute name="AuthenticatorServiceName">
        #MonitorProtocolAuthenticator
    </attribute>
    <attribute name="DbcpServiceName">#DbcpService</attribute>
        <depends>
            <service name="MonitorProtocolAuthenticator">
                    <attribute name="AuthenticatorClassName">
            com.nexacro.xpush.fw.service.auth.UserPropertiesEncryptAuthenticator
                    </attribute>
            </service>
        </depends>
        <depends>DbcpService</depends>
        <depends>Log</depends>
</service>

InsertMsgQueue

Provider로부터 공급된 메시지를 저장하기 위한 큐

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="InsertMsgQueue">
    <attribute name="MaxCapacity">20000</attribute>
</service>

SelectMsgQueue

클라이언트 미수신 메시지 요청 큐

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="SelectMsgQueue">
    <attribute name="MaxCapacity">-1</attribute>
</service>

UpdateMsgQueue

클라이언트 수신 응답 메시지 큐

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="InsertMsgQueue">
    <attribute name="MaxCapacity">-1</attribute>
</service>

InsertTopicMsgQueue

클라이언트 유저 등록, 미수신 메시지 개수 조회 큐

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="InsertTopicMsgQueue">
    <attribute name="MaxCapacity">-1</attribute>
</service>

EtcQueue

알림(Notification) 실패 후속 처리 큐

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="EtcQueue">
    <attribute name="MaxCapacity">-1</attribute>
</service>

EtcService

알림(Notification) 실패 후속 처리 서비스

어트리뷰트

설명

EtcHandlerThreadPoolCount

알림 실패 후속 처리 핸들러 쓰레드 풀 수

EtcHandlerProcessingAtOnceCount

알림 실패 후속 큐로부터 한 번에 가져 올 데이터 수

ConnectionManagerServiceName

클라이언트 연결 관리 서비스 이름

EtcQueueServiceName

알림 실패 후속 처리 큐 이름

DbcpServiceName

DB 연결 서비스 이름

EtcProcessorName

알림 실패 후속처리 클래스 이름

<service name="EtcService">
    <attribute name="EtcHandlerThreadPoolCount">1</attribute>
    <attribute name="EtcHandlerProcessingAtOnceCount">1</attribute>
    <attribute name="ConnectionManagerServiceName">
        #connectionManagerService
    </attribute>
    <attribute name="EtcQueueServiceName">#EtcQueue</attribute>
    <attribute name="DbcpServiceName">#DbcpService</attribute>
    <attribute name="EtcProcessorName">
        com.nexacro.xpush.service.EtcService.EtcProcessorImpl
    </attribute>
</service>

RepositoryService

신뢰성 메시지를 받아 데이터베이스에 저장하는 서비스

어트리뷰트

설명

ProviderHandlerThreadPoolCount

신뢰성 메세지 쓰레드 풀의 쓰레드 개수

Message Provider로부터 전달 받은 메세지에 대한 처리를 수행하는 핸들러를 쓰레드풀에서 작업하기 위한 쓰레드의 수를 설정합니다.

RequestHandlerThreadPoolCount

미수신 메세지 쓰레드 풀의 쓰레드 개수

Nexcaro Client로부터 요청 받은 미수신 메세지에 대한 처리를 수행하는 핸들러에 대해 쓰레드풀에서 작업하기 위한 쓰레드의 수를 설정합니다.

ResponseHandlerThreadPoolCount

수신 확인 메세지 쓰레드 풀의 쓰레드 개수

Nexcaro Client로부터 수신확인 된 메세지에 대한 처리를 수행하는 핸들러에 대해 쓰레드풀에서 작업하기 위한 쓰레드의 수를 설정합니다.

ResponseHandlerBatchAtOnceCount

Client로부터 전달 받은 수신확인 및 완료 응답에 대해 DB에 한 번에 Batch를 실행하는 수입니다.

ResponseHandlerProcessingAtOnceCount

Nexacro Client로부터 전달 받은 메세지가 쌓인 Repository Queue로부터 한번에 메세지를 가져오는 수입니다.

ProviderHandlerProcessingAtOnceCount

Message Provider로부터 전달 받은 메세지가 쌓인 Repository Queue로부터 한번에 메세지를 가져오는 수입니다.

TopicHandlerThreadPoolCount

토픽 처리 쓰레드 풀의 쓰레드 개수

Nexacro Client로부터 TOPIC과 연관된 프로토콜에 대한 처리를 수행하는 핸들러에 대해 쓰레드풀에서 작업하기 위한 쓰레드의 수를 설정합니다.

useOfTrigger

트리거 사용 여부 (오라클에서만 사용)

IsRequestOnlyStateZero

미수신 메세지 요청 범위

클라이언트에서 미수신 메세지를 요청할 때 T_USER_MESSAGE 테이블의 MESSAGE_STATE 컬럼을 참조합니다.

기본적으로 메세지 상태가 0이면 메시지를 받지 못한 상태, 1이면 메세지를 받은 상태, 2이면 클라이언트가 메세지를 수신 확인한 상태입니다.

true : MESSAGE_SATE 컬럼이 0

false : MESSAGE_STATE 컬럼이 0, 1

limitFailCount

연속적인 실패 제한 수

연속적으로 실패횟수가 초과했을 경우 DB 문제로 파악, DB 처리가 실패 시 InsertMessageQueue를 막아 더 이상의 메시지를 수신하지 않도록 합니다.

retryDBPeriodMillis

DB복구 실행 간격(Milliseconds)

InsertMessageQueue가 막혀 있는 경우 DB에 접근하여 정상여부 판단을 하는 시간 간격

availablePeriod

신뢰성메시지의 기본 유효기간 설정 (day)

maximumAvailablePeriod

신뢰성메시지의 최대 유효기간 설정 (day)

<service name=" RepositoryService ">    
    <attribute name="ProviderHandlerThreadPoolCount">10</attribute>
    <attribute name="RequestHandlerThreadPoolCount">10</attribute>
    <attribute name="ResponseHandlerThreadPoolCount">10</attribute>
    <attribute name="ResponseHandlerProcessingAtOnceCount">1000</attribute>
    <attribute name="ProviderHandlerProcessingAtOnceCount">10</attribute>
    <attribute name="TopicHandlerThreadPoolCount">10</attribute>
    <attribute name="useOfTrigger">true</attribute>
    <attribute name="IsRequestOnlyStateZero">true</attribute>
    <attribute name="limitFailCount">100</attribute>
    <attribute name="retryDBPeriodMillis">60000</attribute>
    <attribute name="availablePeriod">-1</attribute>                
    <attribute name="maximumAvailablePeriod">-1</attribute>    
    <attribute name="PublisherServiceName">#Publisher</attribute>
    <attribute name="DbcpServiceName">#DbcpService</attribute>
    <attribute name="InsertMsgQueueServiceName">#InsertMsgQueue</attribute>
    <attribute name="SelectMsgQueueServiceName">#SelectMsgQueue</attribute>
    <attribute name="UpdateMsgQueueServiceName">#UpdateMsgQueue</attribute>
    <attribute name="InsertTopicMsgQueueServiceName">
            #InsertTopicMsgQueue
    </attribute>
    <attribute name="NodeManagerServiceName">
            #nodeManagerService
    </attribute>
    <attribute name="NotificationQueueServiceName">
            #NotificationQueueService
    </attribute>
    <depends>NotificationQueueService</depends>
    <depends>Publisher</depends>
    <depends>UpdateMsgQueue</depends>
    <depends>SelectMsgQueue</depends>
    <depends>InsertMsgQueue</depends>
    <depends>InsertTopicMsgQueue</depends>
    <depends>DbcpService</depends>
    <depends>Log</depends>
</service>

DbcpService

데이터베이스의 connection Pool을 관리 하는 서비스

어트리뷰트

설명

username

Database 접속 할 사용자 ID

password

Database 접속할 사용자 비밀번호

connectUri

접속할 Database의 URI

jdbcClassName

접속할 JDBC의 Class Name

maxActive

서비스에 동시에 사용될 수 있는 최대 커넥션 개수

maxIdle

커넥션 풀에 유지될 수 있는 Idle 상태 커넥션의 최대 개수

minIdle

커넥션 풀에 유지될 수 있는 Idle 상태 커넥션의 최소 개수

maxWait

커넥션 풀에서 사용 중인 커넥션의 개수가 maxActive 개수인 경우 maxWait만큼 기다리게 된다. 만약 maxWait 후에도 사용할 수 있는 여분의 커넥션이 없을 경우 에러를 발생시키게 된다.

validationQuery

커넥션 풀 연결이 유효한지 확인하기 위한 SQL 쿼리문입니다.

쿼리문은 SQL SELECT 구문으로 작성해야 하며, 하나 이상의 ROW를 반환해야 합니다.

testOnBorrow

Pool 에서 커넥션을 얻어올 때 테스트 실행

testOnReturn

Pool 로 커넥션을 반환할 때 테스트 실행

testWhileIdle

Pool 안에 있는 유휴 상태의 커넥션 대상으로 테스트 실행 여부

timeBetweenEvictionRunsMillis

Evictor 스레드가 동작하는 간격

-1 이면 Evictor 스레드의 실행이 비활성

numTestsPerEvictionRun

pool 에 있는 커넥션을 검사할 갯수

minEvictableIdleTimeMillis

커넥션의 유휴 시간을 확인해 커넥션을 제거할 시간

UserInfoEncryptorClassName

DB 접속 계정 정보를 암/복호화하는 클래스명.

isEncrypted

DB 접속 계정이 암호화되었을 경우, true 그렇지않을 경우, false.

자세한 내용은 Apache Commons DBCP 사이트를 참고해주세요.

http://commons.apache.org/proper/commons-dbcp/configuration.html

<service name="DbcpService">    
    <attribute name="username">sa</attribute>
    <attribute name="password"></attribute>
    <attribute name="connectUri">jdbc:h2:tcp://localhost/~/test</attribute>
    <attribute name="jdbcClassName">org.h2.Driver</attribute>
    <attribute name="maxActive">10</attribute>
    <attribute name="maxIdle">0</attribute>
    <attribute name="minIdle">5</attribute>
    <attribute name="maxWait">-1</attribute>
    <attribute name="validationQuery">select 1 from dual</attribute>
    <attribute name="testOnBorrow">true</attribute>
    <attribute name="testOnReturn">false</attribute>
    <attribute name="testWhileIdle">false</attribute>
    <attribute name="timeBetweenEvictionRunsMillis">-1</attribute>
    <attribute name="numTestsPerEvictionRun">3</attribute>
    <attribute name="minEvictableIdleTimeMillis">1800000</attribute>
    <attribute name="UserInfoEncryptorClassName">com.nexacro.xpush.crypto.XPushPBEStringEncryptor</attribute>
    <attribute name="isEncrypted">false</attribute>
    <depends>Log</depends>
</service>

CronTabScheduleService

스케줄링을 설정하는 서비스

어트리뷰트

설명

type="java.lang.String"

* * * * * 는 분, 시, 일, 월, 요일을 나타냅니다.

분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-6)

<service name=" CronTabScheduleService ">
    ...
    <argument type="java.lang.String">
        0 0 1 * *
    </argument> <!-- 매월 1일 0시 0분 메시지 삭제 -->
    ...
</service>

수신 완료된 메시지 삭제

<invoke name="add">
   <!-- 매월 1일 0시 0분 메시지 삭제  -->
   <argument type="java.lang.String">0 0 1 * *</argument> 
   <argument type="it.sauronsoftware.cron4j.Task">
      <object code="com.nexacro.xpush.service.schedule.DeleteMessageTask">
         <attribute name="dbcpService">
            <service-ref>#DbcpService</service-ref>
         </attribute>
      </object>                              
   </argument>
</invoke>

유효기간 메시지 삭제

<invoke name="add">
   <!-- 매월 매일 0시 0분 만료 메시지 삭제  -->
   <argument type="java.lang.String">0 0 * * *</argument> 
   <argument type="it.sauronsoftware.cron4j.Task">
      <object code="com.nexacro.xpush.service.schedule.DeleteExpiredMessageTask">
         <attribute name="dbcpService">
            <service-ref>#DbcpService</service-ref>
         </attribute>
      </object>                              
   </argument>
</invoke>

유효기간 알림 삭제

<invoke name="add">
 <!-- 일요일 0시 0분 만료 알림 삭제  -->
<argument type="java.lang.String">0 0 * * *</argument>
    <argument type="it.sauronsoftware.cron4j.Task">
<object code="com.nexacro.xpush.service.schedule.DeleteExpiredNotificationTask">
            <attribute name="dbcpService">
                   <service-ref>#DbcpService</service-ref>
            </attribute>
     </object>            
</argument>
</invoke>

HazelcastService

scale-out 서비스

어트리뷰트

설명

portAutoIncrement

각각의 HazelcastService에 할당되는 포트 번호의 자동 증가 기능의 활성화 여부입니다.

default : false

port

HazelcastService에서 사용할 기본 포트 번호입니다.

default : 10087

joinTcpipEnable

TCP/IP로 다른 X-PUSH Node와의 연결 여부 설정

default : false

joinTcpipMember

연결될 X-PUSH Node들이 정보

ex) 127.0.0.1:10087

<service name="HazelcastService">
    <attribute name="portAutoIncrement">false</attribute>
    <attribute name="port">10087</attribute>
    <attribute name="publicAddress">172.10.12.120</attribute>
    <attribute name="joinTcpipEnable">false</attribute>
    <attribute name="joinTcpipMember" type ="java.lang.String[]">
        127.0.0.1:10087           
    </attribute>       
     <depends>Log</depends>      
 </service>

ConnectionManagerService

클라이언트 연결 관리 서비스

어트리뷰트

설명

lockTimeSec

한 X-PUSH Node가 다운되었을 경우, Node 간에 공유하는 정보를 정리하기 위한 lock 시간.(단위:초)

HazelcastServiceName

scale-out 서비스 이름

<service name="connectionManagerService" ... >
    <attribute name="lockTimeSec">120</attribute>
    <attribute name="HazelcastServiceName">#HazelcastService</attribute>
</service>

NodeManagerService

X-PUSH 노드 관리 서비스

어트리뷰트

설명

HazelcastServiceName

scale-out 서비스 이름

<service name="nodeManagerService">
    <attribute name="HazelcastServiceName">#HazelcastService</attribute>
    <depends>HazelcastService</depends>
</service>

NotificationAttributeCommonService

모바일 알림 속성 설정 서비스

어트리뷰트

설명

MultiAppWithProjectID

프로젝트로 구성된 여러 모바일 앱 사용 여부

badge

badge 표시 여부

isBadgeOnlyStateZero

미수신 메시지의 상태값이 0인 값만 badge에 표시 여부

retries

사용되지 않음

<service name="NotificationAttributeCommonService">
    <attribute name="IsMultiAppWithProjectID">true</attribute>
    <attribute name="badge">true</attribute>
    <attribute name="IsBadgeOnlyStateZero">true</attribute>
    <attribute name="retries">3</attribute>
</service>

NotificationBuilderService

모바일 알림 생성 서비스

어트리뷰트

설명

InsertBatchAtOnceCount

T_Notification 테이블에 한번에 insert 할 개수

UpdateHandlerBatchAtOnceCount

모바일 알림 result를 T_Notification 테이블에 한번에 update할 개수

UpdateHandlerProcessingAtOnceCount

Update 큐로부터 한번에 가져올 개수

NotificationQueueServiceName

Notification 큐 서비스 이름

ConnectionManagerServiceName

클라이언트 연결 관리 서비스 이름

DbcpServiceName

DB 연결 서비스 이름

RepositoryServiceName

저장소 서비스 이름

ApnsNotifiableQueueServiceName

APNs 알림 큐 서비스 이름

GcmNotifiableQueueServiceName

FCM 알림 큐 서비스 이름

UpdateNotificationQueueServiceName

모바일 알림 결과 업데이트 큐 서비스 이름

NotificationFormatterName

모바일 알림 메시지 변환 이름

NotificationAttributeCommonServiceName

모바일 알림 속성 설정 서비스 이름

<service name="NotificationBuilderService">
    <attribute name="insertBatchAtOnceCount">1000</attribute>
    <attribute name="UpdateHandlerBatchAtOnceCount">1000</attribute>
    <attribute name="UpdateHandlerProcessingAtOnceCount">1000</attribute>
    <attribute name="NotificationQueueServiceName">
        #NotificationQueueService
    </attribute>
    <attribute name="ConnectionManagerServiceName">
        #connectionManagerService
    </attribute>
    <attribute name="DbcpServiceName">#DbcpService</attribute>
    <attribute name="RepositoryServiceName">#RepositoryService</attribute>
    <attribute name="ApnsNotifiableQueueServiceName">
        #ApnsNotifiableQueueService
    </attribute>
    <attribute name="GcmNotifiableQueueServiceName">
        #GcmNotifiableQueueService
    </attribute>
    <attribute name="UpdateNotificationQueueServiceName">
        #UpdateNotificationQueueService
    </attribute>    
    <attribute name="NotificationFormatterName">
    com.nexacro.xpush.service.notification.NotificationFormatterPropertiesImpl
    </attribute>
    <depends>NotificationQueueService</depends>
    <depends>connectionManagerService</depends>
    <depends>DbcpService</depends>
    <depends>RepositoryService</depends>
    <depends>ApnsNotifiableQueueService</depends>
    <depends>GcmNotifiableQueueService</depends>
    <depends>UpdateNotificationQueueService</depends>
    <attribute name="NotificationAttributeCommonServiceName">
        #NotificationAttributeCommonService</attribute>
    <depends>NotificationAttributeCommonService</depends>
</service>

ApnsInfoService

APNs 인증서 정보 서비스

어트리뷰트

설명

ProjectID

프로젝트 이름

AppInfo

Apns 인증서 정보

BundleID = path, password, keyStoreType, production

<service name="IOS_PRO#2">
    <attribute name="ProjectID">PRO#2</attribute>
    <attribute name="AppInfo" type ="java.util.HashMap">
        com.nexacro.apns=C:\tmp\apns.p12,password,PKCS12,false,
     </attribute>
</service>

ApnsNotiferService

APNs 알림 서비스

어트리뷰트

설명

ApnsInfo

인증서 서비스 이름

NotificationAttributeCommonServiceName

모바일 알림 속성 서비스 이름

ApnsConnectorName

ApnsConnector 클래스

feedbackService

Apns 피드백서비스 활성화 유무

sound

알림 사운드

ApnsMessageQueueServiceName

Apns 큐 서비스 이름

DbcpServiceName

DB 연결 서비스 이름

ApnsProviderThreadPoolCount

Apns Message Provider 쓰레드 풀 개수

failOver

모바일 알림 실패 시 후속 처리 유무

nextQueueServiceName

모바일 알림 실패 시 후속 처리되는 큐 서비스 이름

UpdateNotificationQueueServiceName

모바일 알림 결과 업데이트 큐 서비스 이름

<service name="ApnsNotifierService">
    <attribute name="ApnsInfo">
            #IOS_PRO#2
    </attribute>
    <attribute name="NotificationAttributeCommonServiceName">
        #NotificationAttributeCommonService
    </attribute>
    <attribute name="ApnsConnectorName">
        com.nexacro.xpush.service.notification.connector.XPushApnsConnector
    </attribute>
    <attribute name="feedbackService">true</attribute>
    <attribute name="sound">default</attribute>
    <attribute name="ApnsMessageQueueServiceName">
        #ApnsNotifiableQueueService
    </attribute>
    <attribute name="DbcpServiceName">#DbcpService</attribute>
    <attribute name="ApnsProviderThreadPoolCount">1</attribute>
    <attribute name="failOver">true</attribute>
    <attribute name="nextQueueServiceName">#EtcQueue</attribute>
    <attribute name="UpdateNotificationQueueServiceName">
        #UpdateNotificationQueueService
    </attribute>    
    <depends>UpdateNotificationQueueService</depends>
    <depends>ApnsNotifiableQueueService</depends>
    <depends>DbcpService</depends>
    <depends>NotificationAttributeCommonService</depends>
</service>

FcmInfoService

APNs 인증서 정보 서비스

어트리뷰트

설명

ProjectID

프로젝트 이름

ApiKey

FCM 프로젝트 ApiKey

SenderID

FCM 발신자 아이디

<service name="ANDROID_PRO#1">
    <attribute name="ProjectID">PRO#1</attribute>
    <attribute name="Apikey">AIzaSyAbsdAxWAIZAXnTR12mbAhe6GUH3yyIx7A</attribute>    
    <attribute name="SendID">678520125789</attribute>                        
</service>

GcmNotifierService

FCM 알림 서비스

어트리뷰트

설명

FcmInfo

FCM 프로젝트 서비스 이름

NotificationAttributeCommonServiceName

모바일 알림 속성 서비스 이름

GcmConnectorName

FcmConnector 클래스

GcmMessageQueueServiceName

FCM 큐 서비스 이름

DbcpServiceName

DB 연결 서비스 이름

GcmProviderThreadPoolCount

FCM Message Provider 쓰레드 풀 개수

failOver

모바일 알림 실패 시 후속 처리 유무

nextQueueServiceName

모바일 알림 실패 시 후속 처리되는 큐 서비스 이름

UpdateNotificationQueueServiceName

모바일 알림 결과 업데이트 큐 서비스 이름

<service name="GcmNotifierService">
    <attribute name="FcmInfo">
        #ANDROID_PRO#1
    </attribute>
    <attribute name="NotificationAttributeCommonServiceName">
        #NotificationAttributeCommonService
    </attribute>
    <attribute name="GcmConnectorName">
        com.nexacro.xpush.service.notification.connector.GcmHttpConnector
    </attribute>    
    <attribute name="GcmMessageQueueServiceName">
        #GcmNotifiableQueueService
    </attribute>
    <attribute name="DbcpServiceName">#DbcpService</attribute>
    <attribute name="GcmProviderThreadPoolCount">1</attribute>
    <attribute name="failOver">true</attribute>
    <attribute name="nextQueueServiceName">#EtcQueue</attribute>
    <attribute name="UpdateNotificationQueueServiceName">
        #UpdateNotificationQueueService
    </attribute>    
    <depends>UpdateNotificationQueueService</depends>
    <depends>GcmNotifiableQueueService</depends>
    <depends>DbcpService</depends>
    <depends>NotificationAttributeCommonService</depends>
</service>

NotificationQueueService

모바일 알림 큐 서비스

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="NotificationQueueService">
    <attribute name="MaxCapacity">-1</attribute>
</service>

GcmNotifiableQueueService

FCM 모바일 알림 큐 서비스

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="GcmNotifiableQueueService">
    <attribute name="MaxCapacity">-1</attribute>
</service>

ApnsNotifiableQueueService

Apns 알림 큐 서비스

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="ApnsNotifiableQueueService">
    <attribute name="MaxCapacity">-1</attribute>
</service>

UpdateNotificationQueueService

모바일 알림 큐 서비스

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="UpdateNotificationQueueService">
    <attribute name="MaxCapacity">-1</attribute>
</service>

UpdateNotificationQueueService

모바일 알림 큐 서비스

어트리뷰트

설명

MaxCapacity

큐 최대 용량(개수)

<service name="UpdateNotificationQueueService">
    <attribute name="MaxCapacity">-1</attribute>
</service>

Log

로그 서비스

XPUSH에서 로그는 jp.osssc.service.log.Logger 인터페이스로 구현됩니다.

어트리뷰트

설명

MessageRecordFactoryServiceName

메시지 기록 팩토리 서비스 이름

DebugEnabled

Logger.debug() 로그의 출력 여부

SystemDebugEnabled

LogServiceMBean.SYSTEM_DEBUG_CATEGORY 카테고리 로깅을 수행할지 여부

SystemInfoEnabled

LogServiceMBean.SYSTEM_INFO_CATEGORY 카테고리 로깅을 수행할지 여부

SystemWarnEnabled

LogServiceMBean.SYSTEM_WARN_CATEGORY 카테고리 로깅을 수행할지 여부

SystemErrorEnabled

LogServiceMBean.SYSTEM_ERROR_CATEGORY 카테고리 로깅을 수행할지 여부

SystemFatalEnabled

LogServiceMBean.SYSTEM_FATAL_CATEGORY 카테고리 로깅을 수행할지 여부

CategoryServiceNames

카테고리 서비스 이름

<service name="Log">
    <attribute name="MessageRecordFactoryServiceName">
            #MessageRecordFactory
    </attribute>
    <attribute name="DebugEnabled">true</attribute>
    <attribute name="SystemDebugEnabled">false</attribute>
    <attribute name="SystemInfoEnabled">false</attribute>
    <attribute name="SystemWarnEnabled">true</attribute>
    <attribute name="SystemErrorEnabled">true</attribute>
    <attribute name="SystemFatalEnabled">true</attribute>
    <attribute name="CategoryServiceNames">
            #ConsoleLogger
            #FileLogger
            #LogDispatcher
    </attribute>
    ...
</service>

MessageRecordFactory

메시지 기록 팩토리 서비스

어트리뷰트

설명

MessageRecordClassName

메시지 기록 클래스 이름

AllowOverrideMessage

Override된 메시지 허용 유무

MessageDefines

메시지 로그 정의

- 로그레벨 = 범위, 카테고리

SecretMode

비밀 문자가 포함 된 메시지의 문자 마스킹 여부

<service name="MessageRecordFactory">
    <attribute name="MessageRecordClassName">
        jp.ossc.nimbus.service.log.LogMessageRecordImpl
    </attribute>
    <attribute name="AllowOverrideMessage">true</attribute>
    <attribute name="MessageDefines">
        DEBUG=@0,40,File:Console:UserLogProcessor
        TRACE=@0,30,File:Console:UserLogProcessor
        INFO=@0,20,File:Console:UserLogProcessor
        WARN=@0,10,File:Console:UserLogProcessor
        ERROR=@0,0,File:Console:UserLogProcessor
    </attribute>
    <attribute name="SecretMode">true</attribute>
</service>

ConsoleLogger

콘솔에 표시되는 로그 메시지 설정 서비스

어트리뷰트

설명

CategoryName

카테고리 이름

PriorityRange

로그 범위

MessageWriterServiceName

메시지 writer 서비스 이름

WritableRecordFactoryServiceName

WritableRecordFactoryService 이름

ConsoleWritableRecordFactory

어트리뷰트

설명

Format

로그 포맷

DateFormat

로그 날짜 포맷

<service name="ConsoleLogger">
    <attribute name="CategoryName">Console</attribute>
    <attribute name="PriorityRange">0:40</attribute>
    <attribute name="MessageWriterServiceName">#ConsoleLogWriter</attribute>
    <attribute name="WritableRecordFactoryServiceName">
        #ConsoleWritableRecordFactory
    </attribute>
    <depends>#ConsoleLogWriter</depends>
    <depends>
        <service name="ConsoleWritableRecordFactory">
                <attribute name="Format">[%DATE%][%CODE%] %MESSAGE%</attribute>
                <attribute name="DateFormat">yyyy/MM/dd HH:mm:ss.SSS</attribute>
        </service>
    </depends>
</service>

FileLogger

파일에 저장되는 로그 메시지 설정 서비스

어트리뷰트

설명

CategoryName

카테고리 이름

PriorityRange

로그 범위

MessageWriterServiceName

메시지 writer 서비스 이름

WritableRecordFactoryServiceName

WritableRecordFactoryService 이름

FileWritableRecordFactory

어트리뷰트

설명

Format

로그 포맷

DateFormat

로그 날짜 포맷

<service name="FileLogger">
    <attribute name="CategoryName">File</attribute>
    <attribute name="PriorityRange">0:40</attribute>
    <attribute name="MessageWriterServiceName">#FileLogWriter</attribute>
    <attribute name="WritableRecordFactoryServiceName">
        #FileWritableRecordFactory
    </attribute>
    <depends>#FileLogWriter</depends>
    <depends>
        <service name="FileWritableRecordFactory">
                <attribute name="Format">[%DATE%][%CODE%] %MESSAGE%</attribute>
                <attribute name="DateFormat">yyyy/MM/dd HH:mm:ss.SSS</attribute>
        </service>
    </depends>
</service>

LogDispatcher

사용자 정의 로그 서비스

어트리뷰트

설명

CategoryName

카테고리 이름

PriorityRange

로그 범위

MessageWriterServiceName

메시지 writer 서비스 이름

WritableRecordFactoryServiceName

WritableRecordFactoryService 이름

LogFactory

어트리뷰트

설명

Format

로그 포맷

DateFormat

로그 날짜 포맷

<service name="LogDispatcher">
    <attribute name="CategoryName">UserLogProcessor</attribute>
    <attribute name="PriorityRange">0:20</attribute>
    <attribute name="MessageWriterServiceName">#ConsoleLogWriter</attribute>
    <attribute name="WritableRecordFactoryServiceName">
        #LogFactory
    </attribute>
    <depends>
        <service name="LogFactory">
                <attribute name="Format">[%DATE%][%CODE%] %MESSAGE%</attribute>
                <attribute name="DateFormat">yyyy/MM/dd HH:mm:ss.SSS</attribute>
        </service>
    </depends>
</service>

FileLogWriter

로그 파일 설정 서비스

어트리뷰트

설명

LogPath

로그 위치

LogFile

로그 파일 이름

DatePattern

로그 파일 이름 날짜 패턴

ex) xpush.log.20190725

Encoding

로그 파일 내용 인코딩

Append

로그 파일 내용 Apeend 여부

BufferedIO

Buffered된 Stream IO 여부

<service name="FileLogWriter">
    <attribute name="LogPath">log</attribute>
    <attribute name="LogFile">xpush.log</attribute>
    <attribute name="DatePattern">'.'yyyy-MM-dd</attribute>
    <attribute name="Encoding">utf-8</attribute>
    <attribute name="Append">true</attribute>
    <attribute name="BufferedIO">false</attribute>
</service>

ConsoleLogWriter

로그 콘솔 설정 서비스

MonitorLogWriter

XPUSH 모니터링 상태 로그 출력 서비스

어트리뷰트

설명

IsRecord

파일 기록 여부

LogPath

로그 위치

LogFile

로그 파일 이름

DatePattern

로그 파일 이름 날짜 패턴

ex) xpush.log.20190725

Encoding

로그 파일 내용 인코딩

Append

로그 파일 내용 Apeend 여부

BufferedIO

Buffered된 Stream IO 여부

RecordingPeriod

기록 주기

PushMonitorServiceName

PushMonitor 서비스 이름

<service name="MonitorLogWriter">
    <attribute name="IsRecord">true</attribute>
    <attribute name="LogPath">log/status</attribute>
    <attribute name="LogFile">xpush.status</attribute>
    <attribute name="DatePattern">'.'yyyy-MM-dd</attribute>
    <attribute name="Encoding">utf-8</attribute>
    <attribute name="Append">true</attribute>
    <attribute name="BufferedIO">false</attribute>    
    <attribute name="RecordingPeriod">5000</attribute>
    <attribute name="PushMonitorServiceName">#PushMonitor</attribute>
</service>