簡體   English   中英

QueueBrowser不會返回所有消息

[英]QueueBrowser does not return all messages

我列出了隊列和每個隊列中的消息。 以下是我的代碼。 但是,QueueBrowser無法正確檢索消息。

比方說,我有一個名為TestQueue的隊列,它有1000條消息。

第一次運行程序時,它僅顯示200條消息。 第二-400第三-600前進-800第五-1000

你能告訴我如何解決這個問題嗎?

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();

javax.jms.QueueBrowser API中:

掃描完成后,消息可能正在到達或即將過期。 JMS API不需要將枚舉的內容作為隊列內容的靜態快照。 這些更改是否可見取決於JMS提供程序。

您是否嘗試過指定預取策略

只需使用JMX連接到Broker(例如,使用jconsole)即可。 在特定的隊列上,將MaxPageSize屬性設置為200個以上,則可以列出更多消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM