작동하지 않습니다아파치 QPID JMS 클라이언트 설정 프리 페치 내가 이와 같은 URI로 구성된 <code>JmsConnectionFactory</code>이
failover:(amqps://11.22.33.44?amqp.idleTimeout=120000&transport.tcpKeepAlive=true&jms.prefetchPolicy.all=10)?failover.maxReconnectAttempts=20
주 공식 documentation
에 따라jms.prefetchPolicy.all=10
매개 변수... 원격 피어가 클라이언트에 보낼 수있는 메시지의 수를 제어하고 각 소비자에 대한 프리 페치 버퍼에 보관합니다. 인스턴스.
그래서 클라이언트에 버퍼링 된 메시지가 10 개를 초과하지 않아야합니다. 맞습니까? 글쎄, 그건 작동하지 않습니다.
나는 정기적으로 MessageQueue.size()
JmsMessageConsumer
각각의 인쇄 반사를 사용하여 종료했습니다
MessageConsumer messageConsumer = ...
Field field = JmsMessageConsumer.class.getDeclaredField("messageQueue");
field.setAccessible(true);
MessageQueue q = (MessageQueue) field.get(messageConsumer);
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(() -> System.out.println(q.size()), 10, 10, TimeUnit.SECONDS);
그리고 내 메시지 핸들러 (또는 차단) 속도가 느린 경우, 나는 약간 덜 1000 이상의 메시지 큐 크기를 참조, 이는 기본 프리 페치 크기입니다.
그래서 버그입니까? 그리고 다른 프리 페치 크기를 설정하는 방법은 무엇입니까?
나는 qpid-jms-client
버전 0.27.0
을 사용하고 있습니다.
아, 그게 설명해. 나는 나중에 그것을 시도 할 것이다. – Malt