6.2.2. JDBC 연결 풀링 구성
JDBC 지속성을 위해 브로커를 구성한 경우 브로커는 JDBC 연결을 사용하여 데이터베이스 테이블에 메시지 및 바인딩 데이터를 저장합니다.
JDBC 연결 실패가 발생하고 오류가 발생할 때 데이터베이스 읽기 또는 쓰기와 같은 활성 연결 활동(예: 데이터베이스 읽기 또는 쓰기)이 없는 경우 브로커는 계속 실행되고 데이터베이스 연결을 재설정하려고 시도합니다. 이를 위해 AMQ Broker는 JDBC 연결 풀링을 사용합니다.
일반적으로 연결 풀은 여러 애플리케이션 간에 공유할 수 있는 지정된 데이터베이스에 대한 열린 연결 집합을 제공합니다.In general, a connection pool provides a set of open connections to a specified database that can be shared between multiple applications. 브로커의 경우 브로커와 데이터베이스 간의 연결이 실패하면 브로커는 풀과 다른 연결을 사용하여 데이터베이스에 다시 연결을 시도합니다. 이 풀은 브로커가 수신되기 전에 새 연결을 테스트합니다.
다음 예제에서는 JDBC 연결 풀링을 구성하는 방법을 보여줍니다.
JDBC 연결 풀링을 명시적으로 구성하지 않으면 브로커는 기본 구성으로 연결 풀링을 사용합니다. 기본 구성에서는 기존 JDBC 구성의 값을 사용합니다. 자세한 내용은 기본 연결 풀링 구성을 참조하십시오.
사전 요구 사항
- 이 예는 JDBC 지속성 구성에 대한 예제를 기반으로 빌드됩니다. see 6.2.1절. “JDBC 지속성 구성”
연결 풀링을 활성화하기 위해 AMQ Broker는 Apache Commons DBCP 패키지를 사용합니다. 브로커에 대한 JDBC 연결 풀링을 구성하기 전에 이 패키지가 제공하는 내용을 잘 알고 있어야 합니다. 자세한 내용은 다음을 참조하십시오.
절차
-
<
broker-instance-dir> /etc/broker.xml
구성 파일을 엽니다. JDBC 구성을 위해 이전에 추가한
database-store
요소 내에서jdbc-driver-class-name
,jdbc-connection-url
,jdbc-user
,jdbc-password
, 매개변수를 제거합니다. 이 절차의 뒷부분에서 해당 DBCP 구성 매개변수로 바꿉니다.참고이전 매개변수를 명시적으로 제거하지 않으면 이 절차의 뒷부분에서 추가하는 해당 DBCP 매개변수가 우선합니다.
database-store
요소 내에서data-source-properties
요소를 추가합니다. 예를 들면 다음과 같습니다.<store> <database-store> <data-source-properties> </data-source-properties> <bindings-table-name>BINDINGS</bindings-table-name> <message-table-name>MESSAGES</message-table-name> <large-message-table-name>LARGE_MESSAGES</large-message-table-name> <page-store-table-name>PAGE_STORE</page-store-table-name> <node-manager-store-table-name>NODE_MANAGER_STORE</node-manager-store-table-name> <jdbc-network-timeout>10000</jdbc-network-timeout> <jdbc-lock-renew-period>2000</jdbc-lock-renew-period> <jdbc-lock-expiration>20000</jdbc-lock-expiration> <jdbc-journal-sync-period>5</jdbc-journal-sync-period> </database-store> </store>
새
data-source-properties
요소 내에서 연결 풀링을 위한 DBCP 데이터 소스 속성을 추가합니다. 키-값 쌍을 지정합니다. 예를 들면 다음과 같습니다.<store> <database-store> <data-source-properties> <data-source-property key="driverClassName" value="com.mysql.jdbc.Driver" /> <data-source-property key="url" value="jdbc:mysql://localhost:3306/artemis" /> <data-source-property key="username" value="ENC(5493dd76567ee5ec269d1182397346f)"/> <data-source-property key="password" value="ENC(56a0db3b71043054269d1182397346f)"/> <data-source-property key="poolPreparedStatements" value="true" /> <data-source-property key="maxTotal" value="-1" /> </data-source-properties> <bindings-table-name>BINDINGS</bindings-table-name> <message-table-name>MESSAGES</message-table-name> <large-message-table-name>LARGE_MESSAGES</large-message-table-name> <page-store-table-name>PAGE_STORE</page-store-table-name> <node-manager-store-table-name>NODE_MANAGER_STORE</node-manager-store-table-name> <jdbc-network-timeout>10000</jdbc-network-timeout> <jdbc-lock-renew-period>2000</jdbc-lock-renew-period> <jdbc-lock-expiration>20000</jdbc-lock-expiration> <jdbc-journal-sync-period>5</jdbc-journal-sync-period> </database-store> </store>
driverClassName
- JDBC 데이터베이스 드라이버의 정규화된 클래스 이름입니다.
url
- 데이터베이스 서버의 전체 JDBC 연결 URL입니다.
사용자 이름
- 데이터베이스 서버의 암호화된 사용자 이름입니다. 이 값을 암호화되지 않은 일반 텍스트로 지정할 수도 있습니다. 구성 파일에 사용할 사용자 이름 및 암호를 암호화하는 방법에 대한 자세한 내용은 5.9절. “구성 파일의 암호 암호화” 을 참조하십시오.
암호
- 데이터베이스 서버의 암호화된 암호입니다. 이 값을 암호화되지 않은 일반 텍스트로 지정할 수도 있습니다. 구성 파일에 사용할 사용자 이름 및 암호를 암호화하는 방법에 대한 자세한 내용은 5.9절. “구성 파일의 암호 암호화” 을 참조하십시오.
poolPreparedStatements
-
이 매개 변수의 값을
true
로 설정하면 풀에 캐시된 준비된 문 수가 무제한으로 있을 수 있습니다. 따라서 초기화 비용이 줄어듭니다. maxTotal
-
풀의 최대 연결 수입니다. 이 매개 변수의 값을
-1
로 설정하면 제한이 없습니다.
JDBC 연결 풀링을 명시적으로 구성하지 않으면 브로커는 기본 구성으로 연결 풀링을 사용합니다. 기본 구성은 표에 설명되어 있습니다.
DBCP 구성 매개변수 | 기본값 |
---|---|
|
기존 |
|
기존 |
|
기존 |
|
기존 |
|
|
|
|
reconnection은 클라이언트가 적극적으로 브로커에 메시지를 보내는 경우에만 작동합니다. 다시 연결 중에 데이터베이스 테이블에 쓰기를 시도하는 경우 브로커가 실패하고 종료됩니다.
추가 리소스
- AMQ Broker에서 지원하는 데이터베이스에 대한 자세한 내용은 Red Hat Customer Portal의 Red Hat AMQ 7 지원 구성 을 참조하십시오.
- Apache Commons DBCP 패키지에서 사용할 수 있는 모든 구성 옵션에 대해 알아보려면 Apache Commons DBCP 구성 매개 변수 를 참조하십시오.