8장. 대용량 메시지 처리
클라이언트는 브로커의 내부 버퍼 크기를 초과할 수 있는 대용량 메시지를 보내 예기치 않은 오류가 발생할 수 있습니다. 이러한 상황을 방지하기 위해 메시지가 지정된 최소 값보다 클 때 메시지를 파일로 저장하도록 브로커를 구성할 수 있습니다. 이러한 방식으로 대용량 메시지를 처리한다는 것은 브로커가 메모리에 메시지를 저장하지 않는다는 것을 의미합니다. 대신 브로커가 큰 메시지 파일을 저장하는 디스크 또는 데이터베이스 테이블에 디렉터리를 지정합니다.
브로커가 메시지를 큰 메시지로 저장할 때 큐는 큰 메시지 디렉터리 또는 데이터베이스 테이블의 파일에 대한 참조를 유지합니다.
대규모 메시지 처리는 코어 프로토콜, AMQP, OpenWire 및 STOMP 프로토콜에 사용할 수 있습니다.
코어 프로토콜 및 OpenWire 프로토콜의 경우 클라이언트는 연결 구성에서 최소 큰 메시지 크기를 지정합니다. AMQP 및 STOMP 프로토콜의 경우 브로커 구성의 각 프로토콜에 대해 정의된 허용자에서 최소 대규모 메시지 크기를 지정합니다.
큰 메시지를 생성하고 사용하는 데 다른 프로토콜을 사용하지 않는 것이 좋습니다. 이를 위해 브로커는 메시지의 여러 변환을 수행해야 할 수 있습니다. 예를 들어 AMQP 프로토콜을 사용하여 메시지를 보내고 OpenWire를 사용하여 수신하려고 합니다. 이 상황에서 브로커는 먼저 큰 메시지의 전체 본문을 읽고 핵심 프로토콜을 사용하도록 변환해야합니다. 그런 다음 브로커는 이번에는 OpenWire 프로토콜로 다른 변환을 수행해야합니다. 이러한 메시지 변환은 브로커에 상당한 처리 오버헤드를 초래합니다.
위의 프로토콜 중 하나에 지정하는 최소 큰 메시지 크기는 사용 가능한 디스크 공간 크기와 메시지 크기와 같은 시스템 리소스의 영향을 받습니다. 여러 값을 사용하여 성능 테스트를 실행하여 적절한 크기를 결정하는 것이 좋습니다.
이 섹션의 절차에는 다음이 표시됩니다.
- 대규모 메시지를 저장하도록 브로커 구성
- 대규모 메시지 처리를 위한 AMQP 및 STOMP 프로토콜에 대한 수용자를 구성
이 섹션은 AMQ Core Protocol 및 AMQ OpenWire JMS 클라이언트 구성에 대한 추가 리소스에 대한 링크로 연결됩니다.
8.1. 대규모 메시지 처리를 위한 브로커 구성
다음 절차에서는 브로커가 큰 메시지 파일을 저장하는 디스크 또는 데이터베이스 테이블에서 디렉터리를 지정하는 방법을 보여줍니다.
절차
-
<
broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. 브로커가 큰 메시지 파일을 저장할 위치를 지정합니다.
대용량 메시지를 디스크에 저장하는 경우
core
요소 내에large-messages-directory
매개 변수를 추가하고 파일 시스템 위치를 지정합니다. 예를 들면 다음과 같습니다.<configuration> <core> ... <large-messages-directory>/path/to/my-large-messages-directory</large-messages-directory> ... </core> </configuration>
참고large-messages-directory
의 값을 명시적으로 지정하지 않으면 브로커는 기본값 <broker_instance_dir> /data/largemessages
를 사용합니다.데이터베이스 테이블에 대용량 메시지를 저장하는 경우
database-store
요소에large-message-table
매개 변수를 추가하고 값을 지정합니다. 예를 들면 다음과 같습니다.<store> <database-store> ... <large-message-table>MY_TABLE</large-message-table> ... </database-store> </store>
참고large-message-table
의 값을 명시적으로 지정하지 않으면 브로커는 기본값LARGE_MESSAGE_TABLE
을 사용합니다.
추가 리소스
- 데이터베이스 저장소 구성에 대한 자세한 내용은 6.2절. “데이터베이스의 메시지 데이터 저장” 을 참조하십시오.