- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个计划工作从文件夹中获取最近的电子邮件并将这些电子邮件写入文件(.eml 文件)。但是需要很长时间(阅读 9mb 大小的电子邮件需要 5 到 6 分钟)才能完成。因为我使用的是 JavaMail API,所以我在我的代码中设置了如下属性以提高性能,这样它花费的时间非常少(20 秒)。
props.setProperty("mail.imaps.partialfetch","false");
props.setProperty("mail.imaps.fetchsize", "1048576");
fetchsize
设置为更大的值)是否会在我的应用程序中产生任何其他问题?。 fetchsize
到 1048576 意味着我的计划工作将需要package com.indiscover;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.FlagTerm;
public class ReadMail {
public static void main(String[] args) throws InterruptedException, IOException {
String protocol="imaps";
String emailAddress = "email_id";
String password = "password";
Properties props = new Properties();
props.setProperty("mail.store.protocol", protocol);
props.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.imaps.socketFactory.fallback", "false");
props.setProperty("mail.imaps.port", "993");
props.setProperty("mail.imaps.socketFactory.port", "993");
props.setProperty("mail.imaps.partialfetch","false");
props.setProperty("mail.imaps.fetchsize", "1048576");
Session session = Session.getInstance(props, null);
try {
Store store = session.getStore(protocol);
store.connect("imap-mail.outlook.com", emailAddress, password);
Folder inbox = store.getFolder("Archive/Test");
inbox.open(Folder.READ_WRITE);
//search for all "unseen" messages
Flags recent = new Flags(Flags.Flag.RECENT);
FlagTerm recentFlagTerm = new FlagTerm(recent, true);
Message messages[] = inbox.search(recentFlagTerm);
for (int i = 0; i < messages.length; i++) {
Message message = messages[i];
String subject = message.getSubject();
processSaveToFile(message,subject);
}
inbox.close(false);
store.close();
}catch (NoSuchProviderException ex) {
System.out.println("No provider.");
ex.printStackTrace();
} catch (MessagingException ex) {
System.out.println("Could not connect to the message store.");
ex.printStackTrace();
}
}
private static void processSaveToFile (Message msg, String subject) throws MessagingException, IOException
{
String whereToSave = "/Users/XXX/Documents/" + "some_random_name" + ".eml";
OutputStream out = new FileOutputStream(new File(whereToSave));
try {
msg.writeTo(out);
}
finally {
if (out != null) { out.flush(); out.close(); }
}
}
}
最佳答案
来自 JakartaMail 常见问题解答 Retrieving large message bodies seems inefficient at times :
If you are using the IMAP provider, you could try increasing the mail.imap.fetchsize property (the current default is 16k). This will cause data to be fetched from the server in larger chunks. Note that you risk the possibility of the JVM running out of memory when you do this.
Setting fetchsize to 1048576 means that my schedule job will take this much memory always and remaining memory will be allocated to rest of my application.
IMAPInputStream
分配一个可增长的字节数组.看来这将取决于 IMAPInputStream 的生命周期以及内存中可访问的 IMAPInputStream 数量将决定堆使用的行为方式。从您的源代码看来,它应该是相当可预测的。
关于java - 使用 JavaMail 将 "mail.imaps.fetchsize"属性设置为大量有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62474632/
最近我在Junit上工作,用hsqldb(2.3.3)测试Dao相关的代码。系统使用mybatis做数据持久化。 在 mybatisXXsql.xml 中,select 语句中有“fetchSize”
按照书中的示例,我正在使用 setFetchSize() 查询表。书中提到重置 setAutoCommit() 和 setFetchSize()(书中没有关闭 statement 和 connecti
我们希望动态设置特定查询的 fetchSize,以便可以根据打开的线程总数等先决条件在运行时传递大小值。 目前我们使用的是 MyBatis 3.4 库。 下面是我们在应用程序中使用的查询的快照。
r2dbc-oracle 似乎没有适当的背压实现。如果我选择更大的行数(比如 10k),那么它比常规的 jdbc/JPA 查询慢得多。如果我手动将 fetchsize 设置为 1000,那么查询速度大
我一直在使用 JPA 2.0 和 hibernate 作为我的 Web 应用程序的供应商。对于其中一个数据库查询,我使用 JPA criteria builder API 来构造动态查询。我已经能够让
我必须查询一个数据库,结果集非常大。我正在使用 MySQL 作为数据库。为了在大量搜索后避免“OutOfMemoryError”,我有两个选择:一个使用 LIMIT(特定于数据库),另一个使用 jdb
我相信我已经成功地实现了一个 Cassandra Java 集成解决方案,在那里我按照获取大小指定的块,以块的形式获取所有表,如这里 https://docs.datastax.com/en/deve
我目前有一个应用程序,它应该连接到不同类型的数据库,使用 Spark 的 JDBC 选项在该数据库上运行特定查询,然后将生成的 DataFrame 写入 HDFS。 Oracle 的性能非常糟糕(没有
我这里遇到一个特别棘手的情况。我支持在 JBoss 上运行的基于 java 的打包 Web 应用程序。该应用程序是一个打包的应用程序,因此我实际上无法访问任何代码,也不知道代码是如何开发的。 我试图找
我在 Java 中使用 iBatis 作为 ORM 框架。我有一个选择语句 SELECT * FROM SOME_TABLE 我正在使用 queryForList 方法: List
我正在使用 MySQL 并想利用 setFetchSize 属性。默认的 MySQL JDBC 实现并不真正尊重它。如果将 fetchsize 设置为 Integer.MIN_VALUE 它将单独获取
我有一个计划工作从文件夹中获取最近的电子邮件并将这些电子邮件写入文件(.eml 文件)。但是需要很长时间(阅读 9mb 大小的电子邮件需要 5 到 6 分钟)才能完成。因为我使用的是 JavaMail
我有一个 oracle(10.2) PLSQL 过程,它从 sysrefcursor 中的表中获取 15 条记录。然后我将此游标作为结果集传递给 java 类。这个java类被加载到oracle中。
我使用的版本是:datastax java driver 2.0.1 & 2.0.2 cassandra version : [cqlsh 4.1.0 | Cassandra 2.0.4 | CQL
我正在尝试使用 RJDBC 将数据从 Athena DB 提取到 R 中如 AWS's own blog 上的详细描述.唉,我试图提取的数据量很大,所以我收到以下错误消息: Error in .jca
我正在开发一个 Spring-MVC 应用程序,其中有一个使用 Criteria 编写的搜索函数。对于分页搜索,我从前端获取firstResult 和fetchSize 作为参数。不幸的是,当只要求
互联网上有很多关于使用 JDBC 分页/对巨大结果集进行迭代的不同教程。所以,基本上到目前为止我发现了很多方法: Vendor specific sql 可滚动结果集 (?) 将纯结果集保存在内存中,
Spring Batch 中的属性“FetchSize”和“PageSize”有什么区别?PageSize 是一次检索的行数?FetchSize 是数据库调用的数量? 如果我的查询返回 10000 行
我在使用 Cassandra node.js 驱动程序时遇到了一个奇怪的问题。当我尝试从某些分区选择数据时,出现此错误。 Error: There was an problem while parsi
我已使用 PyCharm Pro 版本连接到 AWS Athena。它连接成功,但每当我运行查询时,我都会得到: The requested fetchSize is more than the al
我是一名优秀的程序员,十分优秀!