다음 문제는 브로커 클러스터에 영향을 줍니다.
이 릴리스에서는 완전히 연결된 브로커 클러스터만 지원됩니다. 즉, 클러스터에 있는 모든 브로커가 해당 클러스터 내의 다른 모든 브로커와 직접 통신해야 합니다. imqbrokerd -cluster 명령줄 인수를 사용하여 기존 클러스터에 브로커를 연결하는 경우에는 클러스터에 있는 모든 브로커가 포함되어 있는지 확인해야 합니다.
클라이언트가 고가용성 브로커 클러스터에 있는 브로커에 연결된 경우에는 클라이언트 런타임에서 성공할 때까지 다시 연결을 시도합니다(imqAddressListIterations 연결 팩토리 속성 값 무시).
클라이언트에서는 홈 브로커에 있는 대기열의 내용만 찾아볼 수 있습니다. 그렇지만 클라이언트는 여전히 클러스터의 모든 대기열로 메시지를 보내거나 모든 대기열에서 메시지를 사용할 수 있습니다. 제한은 대기열 찾아보기에만 영향을 줍니다.
버전 4.2 브로커가 포함되어 있는 기존 클러스터의 경우 모든 브로커가 버전 3.5 이상이어야 합니다.
Message Queue 4.2 및 4.1 브로커는 기본적으로 Message Queue 3.7 또는 3.6 브로커를 사용하는 클러스터에서 상호 운용되지 않습니다. 이 두 버전 사이에서 imq.autocreate.queue.maxNumActiveConsumers의 기본값이 변경되었기 때문입니다. (버그 6716400)
해결 방법: Message Queue 4.2 및 4.1 브로커의 imq.autocreate.queue.maxNumActiveConsumers 값을 기본값인 -1에서 이전 버전의 기본값인 1로 변경하십시오.
기존 클러스터에서 고가용성 클러스터로 변환하는 경우 Sun Java System Message Queue 4.2 Administration Guide의 Converting a Standalone Data Store to a Shared Data Store에 설명된 대로 Message Queue Database Manager 유틸리티(imqdbmgr)를 사용하여 기존의 독립 실행형 JDBC 기반 데이터 저장소를 고가용성 데이터 저장소로 변환할 수 있습니다.
HADB를 사용하는 브로커는 10MB를 초과하는 메시지를 처리할 수 없습니다. (버그 6531734)
imqdbmgr upgrade hastore 명령을 사용하여 HADB 저장소로 변환한 경우 저장소에 메시지가 10,000개 이상 저장되면 "too many locks are set" 메시지가 발생하면서 작업에 실패할 수 있습니다. (버그 6588856)
해결 방법: 다음 명령을 사용하여 잠금 수를 늘립니다.
hadbm set NumberOfLocks=<desiredNumber>
추가 정보에 대해서는 Sun Java System Application Server 9.1 Enterprise Edition Troubleshooting Guide의 "HADB Problems"를 참조하십시오.
한 트랜잭션에서 원격 메시지가 500개 이상 완결되면 브로커에서 "HADB-E-12815: Table memory space exhausted" 오류가 발생할 수 있습니다.(버그 6550483)
추가 정보에 대해서는 Sun Java System Application Server 9.1 Enterprise Edition Troubleshooting Guide의 "HADB Problems"를 참조하십시오.
브로커 클러스터에서 브로커가 시작되지 않은 원격 연결에 메시지 대기열을 만듭니다. (버그 4951010)
해결 방법: 일단 연결이 시작되면 사용자가 메시지를 수신합니다. 사용자의 연결이 종료된 경우 메시지는 다른 사용자에게 전달됩니다.
한 트랜잭션 내에서 원격 브로커의 메시지를 두 개 이상 사용할 경우 브로커에 다음 오류 메시지가 기록될 수 있습니다. 이 메시지는 문제를 일으키지 않으며 무시할 수 있습니다.
[26/Jul/2007:13:18:27 PDT] WARNING [B2117]: Message acknowledgement failed from mq://129.145.130.95:7677/?instName=a&brokerSessionUID=3209681167602264320: ackStatus = NOT_FOUND(404)\ Reason = Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed. AckType = MSG_CONSUMED MessageBrokerSession = 3209681167602264320 TransactionID = 3534784765719091968 SysMessageID = 8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690 ConsumerUID = 3534784765719133952\par [26/Jul/2007:13:18:27 PDT] WARNING Notify commit transaction [8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690, [consumer:3534784765719133952, type=NONE]] TUID=3534784765719091968 got response: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.r
이 메시지는 imq.txn.reapLimit 등록 정보가 한 트랜잭션 내의 원격 메시지 수에 비해 낮을 경우 트랜잭션 내의 최근 메시지에 대한 완결을 메시지 홈 브로커에 알릴 때 기록됩니다. (버그 6585449)
해결 방법: 이 메시지를 방지하려면 imq.txn.reapLimit 등록 정보의 값을 늘립니다.