다음 문제는 브로커 클러스터에 영향을 줍니다.
이 릴리스에서는 완전히 연결된 브로커 클러스터만 지원됩니다. 즉, 클러스터에 있는 모든 브로커가 해당 클러스터 내의 다른 모든 브로커와 직접 통신해야 합니다. imqbrokerd -cluster 명령줄 인수를 사용하여 기존 클러스터에 브로커를 연결하는 경우에는 클러스터에 있는 모든 브로커가 포함되어 있는지 확인해야 합니다.
클라이언트가 향상된 브로커 클러스터에 있는 브로커에 연결된 경우에는 클라이언트 런타임에서 성공할 때까지 다시 연결을 시도합니다(imqAddressListIterations 연결 팩토리 속성 값 무시).
클라이언트에서는 홈 브로커에 있는 대기열의 내용만 찾아볼 수 있습니다. 그렇지만 클라이언트는 여전히 클러스터의 모든 대기열로 메시지를 보내거나 모든 대기열에서 메시지를 사용할 수 있습니다. 제한은 대기열 찾아보기에만 영향을 줍니다.
버전 4.3 브로커가 포함되어 있는 기존 클러스터의 경우 모든 브로커가 버전 3.5 이상이어야 합니다.
Message Queue 4.3, 4.2 및 4.1 브로커는 기본적으로 Message Queue 3.7 또는 3.6 브로커를 사용하는 클러스터에서 상호 운용되지 않습니다. 이 두 버전 사이에서 imq.autocreate.queue.maxNumActiveConsumers의 기본값이 변경되었기 때문입니다. (버그 6716400)
해결 방법: 모든 브로커에서 imq.autocreate.queue.maxNumActiveConsumers 값과 동일한 변경 값을 사용하는지 확인합니다. 일반적으로 이 작업은 3.7 또는 3.6 브로커에서 사용되는 구성과 일치하도록 Message Queue 4.3, 4.2 및 4.1 구성을 변경하여 수행합니다(기본적으로 -1 값에서 이전 버전 기본값 1로 변경).
Message Queue 4.3(또는 4.x) 브로커를 Message Queue 3.x 브로커 클러스터에 추가하려면 마스터 브로커가 실행되고 있어야 합니다. (버그 6763796)
Sun GlassFish Message Queue 4.4 Administration Guide의 Cluster Conversion: JDBC-Based Data Store에 설명된 대로 기존 클러스터에서 향상된 클러스터로 변환하면 Message Queue 데이터베이스 관리자 유틸리티(imqdbmgr)를 사용하여 기존 독립 실행형 JDBC 기반 데이터 저장소를 공유 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 등록 정보의 값을 늘립니다.