[英]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.