如何使用Sring的JmsTemplate通过数据包读取消息



从包含2M条消息的队列中读取消息时,出现outOfMemoryException。我正试图找到一种方法,以1000为单位阅读邮件。这是我的代码

List<TextMessage> messages = jmsTemplate.browse(JndiQueues.BACKOUT, (session,browser) -> {
Enumeration<?> browserEnumeration = browser.getEnumeration().;
List<TextMessage> messageList = new ArrayList<TextMessage>();
while (browserEnumeration.hasMoreElements()) {
messageList.add((TextMessage) browserEnumeration.nextElement());
}
return messageList;
});

感谢

在不同的线程上执行浏览,并通过BlockingQueue<List<TextMessage>>将结果子集传递给主线程。例如具有小容量的CCD_ 2。

当队列已满时,浏览线程将被阻塞。当主线程从队列中删除一个条目时,浏览器可以添加一个新条目。

容量至少为2可能是有意义的,这样下一个列表就可以立即使用。

相关内容

  • 没有找到相关文章

最新更新