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