각 큐의 큐와 메시지를 나열합니다. 다음은 내 코드입니다. 그러나 QueueBrowser는 메시지를 올바르게 검색하지 못합니다.QueueBrowser가 모든 메시지를 반환하지 않습니다.
즉, 1000 개의 메시지가있는 TestQueue라는 대기열이 있습니다.
처음으로 프로그램을 실행하면 200 개의 메시지 만 표시됩니다. 두 번째 - 400 셋째 - 600 등 - 800 다섯 번째 -
(1000)는 어떻게이 문제를 해결하는 방법을 말해 줄래? javax.jms.QueueBrowser
API에서
ConnectionFactory out = new ActiveMQConnectionFactory("tcp://localhost:61616?jms.prefetchPolicy.all=10000");
ActiveMQConnection connection = (ActiveMQConnection) out.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Set<ActiveMQQueue> amqs = connection.getDestinationSource().getQueues();
Iterator<ActiveMQQueue> queues = amqs.iterator();
while (queues.hasNext())
{
ActiveMQQueue queue_t = aqueues.next();
String q_name = queue_t.getPhysicalName();
List<ActiveMQMessage> msgList = ((ActiveMQSession) session).getUnconsumedMessages();
System.out.println("\nQueue = " + q_name);
QueueBrowser queueBrowser = session.createBrowser(queue_t);
Enumeration e = queueBrowser.getEnumeration();
int numMsgs = 0;
while(e.hasMoreElements())
{
Message message = (Message) e.nextElement();
numMsgs++;
}
System.out.println("No of messages = " + numMsgs);
queueBrowser.close();
}
session.close();
connection.close();
이 문제를 해결 했습니까? – rdmueller
@Ralf, 아직 없습니다. 또한 웹 콘솔조차도 처음에는 200 개의 메시지를 검색 할 수 있습니다. 그런 다음 두 번째로 다시 탐색하려고 시도 할 때 msg 수가 400으로 증가했습니다. 다음 600, 800. 웹 콘솔 코드를 검사하여 QueueBrowser도 사용함을 발견했습니다. –
현재 나의 해결책은 인정하지 않고 모든 메시지를 소비하는 것입니다. 그래서, 나는 모든 메시지를 얻을 수 있으며 큐에서 메시지를 유지할 수 있습니다. 그러나 나는 그것이 신뢰할 수 없다고 느낍니다. 다음 해결책은 max msg 카운트가 충족 될 때까지 대기열을 다시 열람하는 것입니다. –