10.3. JDBC 데이터베이스를 사용한 메시징 저널 지속성


기본 파일 기반 저널을 사용하는 대신 메시지 및 바인딩 데이터를 데이터베이스에 바인딩하도록 JDBC를 사용하려면 JBoss EAP 7 메시징을 구성해야 합니다.

이렇게 하려면 먼저 데이터 소스 하위 시스템에서 datasource 요소를 구성한 다음 해당 데이터 소스를 사용하도록 messaging -activemq 하위 시스템의 server 요소에 journal- datasource 속성을 정의해야 합니다. journal-datasource 특성이 있으면 메시징 하위 시스템에서 파일 기반 저널 대신 데이터베이스에 저널 항목을 지속하도록 알립니다. messaging-tekton 하위 시스템의 서버 리소스에 대한 journal- database 속성은 데이터베이스와 통신하는 데 사용되는 SQL languageect를 정의합니다. 이 속성은 데이터 소스 메타데이터를 사용하여 자동으로 구성됩니다.

파일 기반 저널에 메시지를 유지하는 경우 큰 메시지 크기는 디스크 크기만으로 제한됩니다. 그러나 메시지를 데이터베이스에 보관할 때 큰 메시지 크기는 해당 데이터베이스에 대한 BLOB 데이터 유형의 최대 크기로 제한됩니다.

중요

JBoss EAP 7.4는 현재 Oracle 12c 및 IBM DB2 Enterprise 데이터베이스만 지원합니다.

10.3.1. 데이터베이스 영구 저장소 구성 고려 사항

안정성 향상을 위해 JBoss EAP는 연결 풀을 통해 메시징 호출을 수행하므로 여러 애플리케이션에서 공유할 수 있는 지정된 데이터베이스에 대한 열린 연결 세트를 제공합니다. 즉, JBoss EAP가 연결을 떨어지면 풀의 다른 연결은 실패를 방지하기 위해 실패한 연결을 대체합니다.

참고

이전 버전의 JBoss EAP는 풀에서 하나의 연결만 지원합니다.

데이터 소스 하위 시스템에서 데이터베이스 영구 저장소 또는 풀을 구성하는 경우 다음 포인트를 고려하십시오.

  • min-pool-size 특성 값을 최소 4개로 설정하여 다음 사용 시 각각에 대한 연결을 전용으로 지정합니다.

    • 바인딩된 경우One for the binding
    • 메시지 저널에 대한 1개
    • High Availability (HA)를 사용하는 경우 리스 잠금을 위한 것입니다.
    • HA를 사용하는 경우 노드 관리자 공유 상태용 1개
  • 페이징 또는 대용량 메시지 스트리밍 작업을 수행하는 동시 스레드 수에 따라 max-pool-size 속성 값을 설정합니다. 스레드 수와 연결 수가 일대일이 아니므로 max-pool-size 특성을 구성하기 위한 규칙이 정의되지 않습니다.

연결 수는 페이징 및 대용량 메시지 작업을 처리하는 스레드 수와 연결을 받기 위한 대기 시간을 정의하는 attribute blocking-timeout-wait-밀리코어is 에 따라 달라집니다.

새로운 큰 메시지 또는 페이징 작업이 전용 스레드에서 발생하며 연결이 필요합니다. 이러한 전용 스레드는 연결이 준비되거나 연결을 가져올 시간이 없어 오류가 발생할 때까지 큐에 추가됩니다.

요구 사항에 따라 풀 구성을 사용자 지정하고 해당 환경에서 구성된 풀을 테스트할 수 있습니다.

10.3.2. 메시징 저널 JDBC 지속성 저장소 구성

다음 단계에 따라 JDBC를 사용하여 메시지를 유지하고 데이터를 데이터베이스에 바인딩하도록 JBoss EAP 7 메시징을 구성합니다.

  1. messaging- tekton 하위 시스템에서 사용할 데이터 소스 하위 시스템에서 데이터 소스를 구성합니다. 데이터 소스를 생성하고 구성하는 방법에 대한 자세한 내용은 JBoss EAP 구성 가이드의 데이터 소스 관리를 참조하십시오.
  2. 새 데이터 소스를 사용하도록 messaging-activemq 하위 시스템을 구성합니다.

    /subsystem=messaging-activemq/server=default:write-attribute(name=journal-datasource,value="MessagingOracle12cDS")
    Copy to Clipboard Toggle word wrap

    이렇게 하면 서버 구성 파일의 messaging-tekton 하위 시스템에 다음 구성이 생성됩니다.

    <server name="default">
      <journal datasource="MessagingOracle12cDS"/>
      ...
    </server>
    Copy to Clipboard Toggle word wrap

JBoss EAP 메시징은 이제 데이터베이스를 사용하여 메시징 데이터를 저장하도록 구성되어 있습니다.

10.3.3. 메시징 저널 테이블 이름 구성

JBoss EAP 7 메시징은 별도의 JDBC 테이블을 사용하여 바인딩 정보, 메시지, 대용량 메시지 및 페이징 정보를 저장합니다. 이러한 테이블의 이름은 서버 구성 파일의 messaging -activemq 하위 시스템에서 journal -bindings-table,journal-jms - bindings-table, journal-messages -table, journal-page-store- table 특성을 사용하여 구성할 수 있습니다.

다음은 테이블 이름 제한 목록입니다.

  • JBoss EAP 7 메시징은 GENERATED _ ID가 최대 20자까지 될 수 있는 패턴 TABLE_NAME + GENERATED _ID 를 사용하여 페이징 테이블의 식별자를 생성합니다. Oracle Database 12c의 최대 테이블 이름 길이는 30자이므로 테이블 이름을 10자로 제한해야 합니다. 그렇지 않으면 ORA-00972: 식별자가 너무 길고 페이징이 더 이상 작동하지 않습니다.
  • Oracle Database 12c에 대한 스키마 오브젝트 명명 규칙을 따르지 않는 테이블 이름은 큰따옴표로 묶어야 합니다. 따옴표로 묶은 식별자는 모든 문자로 시작할 수 있으며 문자와 문장 부호는 물론 공백을 포함할 수 있습니다. 그러나 따옴표로 묶거나 따옴표가 없는 식별자는 겹따옴표나 null 문자(\0)를 포함할 수 없습니다. 따옴표로 묶은 식별자는 대소문자를 구분하는 것이 중요합니다.
  • 여러 JBoss EAP 서버 인스턴스에서 동일한 데이터베이스를 사용하여 메시지 및 바인딩 데이터를 유지하는 경우 테이블 이름은 각 서버 인스턴스에 대해 고유해야 합니다. 여러 JBoss EAP 서버는 동일한 테이블에 액세스할 수 없습니다.

다음은 인용된 식별자를 사용하여 journal-page-store-table 이름을 구성하는 관리 CLI 명령의 예입니다.

/subsystem=messaging-activemq/server=default:write-attribute(name=journal-page-store-table,value="\"PAGE_DATA\"")
Copy to Clipboard Toggle word wrap

이렇게 하면 서버 구성 파일의 messaging-tekton 하위 시스템에 다음 구성이 생성됩니다.

<server name="default">
  <journal datasource="MessagingOracle12cDS" journal-page-store-table="&quot;PAGED_DATA&quot;"/>
  ...
</server>
Copy to Clipboard Toggle word wrap

10.3.4. 관리형 도메인에서 메시징 저널 구성

메시징 저널 테이블 이름 구성에서 설명한 대로 JDBC를 사용하여 메시지를 유지하고 데이터를 데이터베이스에 바인딩할 때 여러 JBoss EAP 서버가 동일한 데이터베이스 테이블에 액세스할 수 없습니다. 관리형 도메인에서 서버 그룹의 모든 JBoss EAP 서버 인스턴스는 동일한 프로필 구성을 공유하므로 표현식을 사용하여 메시징 저널 이름 또는 데이터 소스를 구성해야 합니다.

모든 서버가 동일한 데이터베이스를 사용하여 메시징 데이터를 저장하도록 구성된 경우 테이블 이름은 각 서버 인스턴스에 고유해야 합니다. 다음은 이름의 고유한 노드 식별자를 포함하는 표현식을 사용하여 서버 그룹의 각 서버에 대해 고유한 journal-page-store-table 테이블 이름을 생성하는 관리 CLI 명령의 예입니다.

/subsystem=messaging-activemq/server=default:write-attribute(name=journal-page-store-table,value="${env.NODE_ID}_page_store")
Copy to Clipboard Toggle word wrap

각 서버 인스턴스가 다른 데이터베이스에 액세스하는 경우 표현식을 사용하여 각 서버의 메시징 구성이 다른 데이터 소스에 연결할 수 있습니다. 다음 관리 CLI 명령은 connection-url 에서 DB_CONNECTION_URL 환경 변수를 사용하여 다른 데이터 소스에 연결합니다.

data-source add --name=messaging-journal --jndi-name=java:jboss/datasources/messaging-journal --driver-name=oracle12c  --connection-url=${env.DB_CONNECTION_URL}
Copy to Clipboard Toggle word wrap

10.3.5. 메시징 저널 네트워크 시간 제한 구성

JDBC 연결에서 요청에 응답할 때까지 대기하는 최대 시간(밀리초)을 구성할 수 있습니다. 이는 네트워크가 중단되거나 JBoss EAP 메시징과 데이터베이스 간의 연결이 중단되는 경우 어떤 이유로든 데이터베이스가 닫힙니다. 이 경우 시간 초과가 발생할 때까지 클라이언트가 차단됩니다.

journal-jdbc-network-timeout 특성을 업데이트하여 시간 초과를 구성합니다. 기본값은 20000 밀리초 또는 20 초입니다.

다음은 journal-jdbc-network-timeout 속성 값을 10000 밀리초 또는 10 초로 설정하는 관리 CLI 명령의 예입니다.

/subsystem=messaging-activemq/server=default:write-attribute(name=journal-jdbc-network-timeout,value=10000)
Copy to Clipboard Toggle word wrap

10.3.6. 메시징 JDBC 지속성 스토어를 위한 HA 구성

JBoss EAP messaging-activemq 하위 시스템은 브로커가 데이터베이스 저장소 유형으로 구성된 경우 JDBC HA 공유 저장소 기능을 활성화합니다. 그런 다음 브로커는 공유 데이터베이스 테이블을 사용하여 라이브 및 백업 서버가 공유 JDBC 저널 저장소를 통해 작업을 조정하는지 확인합니다.

다음 특성을 사용하여 JDBC 지속성 저장소의 HA를 구성할 수 있습니다.

  • journal-node-manager-store-table: 노드 관리자를 저장할 JDBC 데이터베이스 테이블의 이름입니다.
  • journal-jdbc-lock-expiration: JDBC 잠금을 활성 상태로 유지하지 않고 유효한 것으로 간주되는 시간입니다. 이 특성 값을 초 단위로 지정합니다. 기본값은 20 초입니다.
  • journal-jdbc-lock-renew-period: JDBC 잠금의 유지 서비스 기간. 이 특성 값을 초 단위로 지정합니다. 기본값은 2 초입니다.

기본값은 서버의 ha-policy 및 journal- datasource 특성 값에 따라 고려됩니다.

이전 버전과의 호환성을 위해 각각의 Artemis 특정 시스템 속성을 사용하여 값을 지정할 수도 있습니다.

  • brokerconfig.storeConfiguration.nodeManagerStoreTableName
  • brokerconfig.storeConfiguration.jdbcLockExpirationMillis
  • brokerconfig.storeConfiguration.jdbcLockRenewPeriodMillis

설정 시 이러한tekton별 시스템 속성이 해당 속성의 기본값보다 우선합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat