2014-11-03 8 views
0

생산자가 대용량 메시지 크기의 메시지를 보내는 경우 (즉, 120MB). kahadb와 levelDB는 그런 메시지를 어떻게 처리합니까?대용량 메시지 크기 용 ActiveMQ 지속성 저장소

kahadb : 저널 크기는 기본적으로 32MB입니다. 32MB가 넘는 메일을 보내는 경우 어떻게 처리할까요? 이 크기를 메시지 크기에 따라 적절한 값으로 변경해야합니까?

leveldb : 기본적으로 100mB는 메시지 데이터를 저장하기위한 기본 크기입니다. 그 후에 롤링이 발생합니다. IF 메시지가 100MB 이상입니다. 어떻게 처리할까요?

감사합니다, Kahadb를 들어
아누 즈

답변

0

우리는 메시지, 메시지의 롤링 로그가 있고 길이는 다음 새 파일이 생성 메시지 저널의 크기를 초과하는 경우 명령은, 고정 길이의 데이터 파일에 저장됩니다. KahaDB는 새로운 메시지를 기존 저널에 추가하고 새로운 저널을 생성합니다.

또한 KahaDB는 BTree 형식의 메시지 인덱스를 보유합니다.이 Btree 인덱스는 메시지 ID로 인덱싱 된 데이터 로그의 메시지에 대한 참조를 보유합니다. 즉, KahaDB는이 인덱스의 도움으로 메시지가 저장된 위치를 정확히 알 수 있습니다. . 따라서이 메시지를 저장하기위한 새로운 구성을 추가 할 필요가 없습니다.

단일 데이터 로그 파일의 전체 메시지에 대해서는 약간 연구가 필요할 수도 있습니다. 그리고 KahaDB의 journalSizeLength를 변경하기 전에 이걸 가지고있어. link (도움이 될만한 의견이 있으시면)

행운을 빌어 요!

희망이 있습니다.

+0

테스트했을 때 같은 메시지에 대한 로그를 롤백하지 않습니다. 대신 크기를 유연하게 유지합니다. 200MB의 메시지를 보내면 kahadb는 200MB의 저널을 생성합니다. 따라서 kahadb는 저널 크기 제한을 초과하더라도 동일한 파일에 하나의 메시지를 보관해야합니다. 나는 levelDB에 대해 같은 행동을 보았다. 이 문제가 잘못되면 나를 바로 잡으십시오. –

+0

내 대답 편집 – Vihar