제12장 domain.xml의 JMS 엔진 설정

내용 목차

12.1. 소개
12.2. XML Schema/XML 트리
12.3. Element Reference
12.4. domain.xml 파일 예제

여기에서 JEUS의 domain.xml에 설정되는 JMS 엔진 설정 파일의 설명을 찾을 수 있다.

레퍼런스는 다음 형식으로 구성되어 있다.

  1. XML Schema/XML 트리: XML 설정 파일의 모든 태그 리스트를 정리했다. 각 노드의 형식은 다음과 같다.

    1. 태그 레퍼런스로 빨리 찾아보기 위해서 각 태그마다 인덱스 번호( 예: (11) )를 붙여 놓았다. 태그 레퍼런스에서는 이 번호 순서로 설명한다.

    2. XML Schema에서 정의한 XML 태그명을 <tag name> 형식으로 표시한다.

    3. XML Schema에서 정의한 Cardinality를 표시한다. “?” = 0개나 1개의 element, “+” = 1개 이상의 element, “*” = 0개 이상의 element, (기호가 없음) = 정확히 1개의 element

    4. 몇몇 태그에는 “P” 문자를 붙여 놓았는데, 해당 태그는 성능에 관계되는 태그라는 것을 뜻한다. 이 태그는 설정을 튜닝할 때 사용된다.

  2. Element Reference: 트리에 있는 각 XML 태그를 설명한다.

    1. Dynamic: 동적 설정 반영 가능

    2. Non-Dynamic: 동적 설정 반영 불가능, Dynamic이 설정되지 않은 항목들이 보통 이에 해당 하나 특별히 설명이 있는 경우 이 항목이 표시된다.

    3. Description: 태그에 대한 간단한 설명.

    4. Value Description: 입력하는 값과 타입.

    5. Value Type: 값의 데이터 타입. (예: String)

    6. Value Type Description: 값의 데이터 타입에 대한 설명

    7. Default Value: 해당 XML을 사용하지 않았을 때 기본적으로 사용되는 값.

    8. Defined Value: 이미 정해져 있는 값.

    9. Example: 해당 XML 태그에 대한 예.

    10. Performance Recommendation: 성능 향상을 위해서 추천하는 값.

    11. Child Elements: 자신의 태그 안에 사용하는 태그.

(541) < domain >< servers >< server > <jms-engine>
Description JMS 엔진은 해당 서버에서 JMS 서버를 사용하기 위한 환경을 제공한다. 서버가 부팅될 때 실행되며, 하나의 서버에서는 하나의 JMS 엔진만 지원한다.
Value Type jms-serverType
Child Elements

(543) service-config

(551) event-manager

(552) engine-roll

(553) failover-check-timeout

(554) failover-check-count

(555) thread-pool

(559) connection-factory

(571) persistence-store

(590) message-sort

(595) max-byte

(596) max-message

[예 12.1] domain.xml 파일 예제

<?xml version="1.0" encoding="UTF-8"?>
<domain xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
  <servers>
    <server>
      . . .
      <jms-engine>
        <!--
            Service Channels
        -->

        <!-- Basic service channel -->
        <service-config>
         <name>default</name>
         <listener-name>jms</listener-name>
         <client-limit>1000</client-limit>
         <client-keepalive-timeout>20</client-keepalive-timeout>
        </service-config>

        <!--
            Thread Pool
        -->

        <!-- Default thread pool -->
        <thread-pool>
         <min>10</min>
         <max>20</max>
         <keep-alive-time>300</keep-alive-time>
        </thread-pool>

       <!--
            Durable Subscribers
        -->

        <durable-subscriber>
          <client-id>client_id1</client-id>
          <name>subscription1</name>
          <shared>false</shared>
          <destination-name>ExamplesTopic</destination-name>
          <message-selector>(Provider = 'TmaxSoft')</message-selector>
        </durable-subscriber>

        <!--
          Connection Factories
        -->

        <!-- Connection factory -->
        <connection-factory>
          <!--nonxa-->
          <name>ConnectionFactory</name>
          <export-name>jms/ConnectionFactory</export-name>
          <!-- <server-selection-policy>Round-robin</server-selection-policy> -->
          <!-- <request-blocking-time>200</request-blocking-time> -->
          <!-- <reconnect-enabled>false</reconnect-enabled> -->
          <!-- <reconnect-period>0</reconnect-period> -->
          <!-- <reconnect-interval>5</reconnect-interval> -->
        </connection-factory>

        <!-- Topic connection factory (active-standby architecture) -->
        <connection-factory>
          <type>topic</type>
          <name>TopicConnectionFactory</name>
          <export-name>jms/TopicConnectionFactory</export-name>
          <broker-selection-policy>active-standby</broker-selection-policy>
        </connection-factory>

        <!-- Secure XA connection factory with fixed client ID -->
        <connection-factory>
          <type>xa</type>
          <name>XAConnectionFactory</name>
          <service>secure</service>
          <export-name>jms/XAConnectionFactory</export-name>
          <client-id>client_id1</client-id>
        </connection-factory>

        <!--
          Destinations
        -->

        <!-- Basic queue -->
        <destination>
          <type>queue</type>
          <name>QUEUE1</name>
          <export-name>jms/QUEUE1</export-name>
          <!-- <quota>128M</quota> -->
        </destination>

        <!-- Queue with message-sort  -->
        <destination>
          <type>queue</type>
          <name>QUEUE2</name>
          <export-name>jms/QUEUE2</export-name>
          <message-sort>priority</message-sort>
        </destination>

        <!-- Queue with unit of work  -->
        <destination>
          <type>queue</type>
          <name>QUEUE2</name>
          <export-name>jms/QUEUE2</export-name>
          <unit-of-work>
            <message-handling>gather</message-handling>
            <expiration-time>-1</expiration-time>
          </unit-of-work>
        </destination>

        <!-- Basic topic -->
        <destination>
          <type>topic</type>
          <name>TOPIC1</name>
          <export-name>jms/TOPIC1</export-name>
        </destination>

        <message-sort>
          <name>priority</name>
          <key>JMSPriority</key>
          <type>Integer</type>
          <direction>ascending</direction>
        </message-sort>

        <!--
          Persistence Store
        -->

        <persistence-store>
          <journal>
            <base-dir>/home/example/store/jeusmq</base-dir>
            <!--<initial-log-file-count>5</initial-log-file-count>-->
            <!--<max-log-file-count>10</max-log-file-count>-->
            <!--<log-file-size>128M</log-file-size>-->
            <!--<property>-->
              <!--<key>jeus.store.journal.overflow-factor</key>-->
              <!--<value>0.3</value>-->
            <!--</property>-->
          </journal>
          <!--<jdbc>-->
            <!--<data-source>datatsource1</data-source>-->
            <!--<vendor>oracle</vendor>-->
            <!--<destination-table>TEST_DEST</destination-table>-->
            <!--<durable-subscriber-table>TEST_DSUB</durable-subscriber-table>-->
            <!--<message-table>TEST_MESG</message-table>-->
            <!--<subscription-message-table>TEST_SMSG</subscription-message-table>-->
            <!--<transaction-table>TEST_TRAN</transaction-table>-->
          <!--</jdbc>-->
        </persistence-store>
      </jms-engine>
      . . .
    </server>
  </servers>
</domain>