我正在对一个通过电子邮件发送链接的web应用程序进行负载测试。我有一个专门为此设置的gmail帐户收件人。在生成新帐户时,我会将guid添加到收件人电子邮件中(例如,loadtest_nmndbiwpdi@gmaildomain.com).当我执行测试时,它要么完全成功,要么完全失败,但失败似乎是相当随机的。
这是我的搜索片段:
if (!inbox.isOpen()) {
inbox.open(Folder.READ_ONLY);
}
SearchTerm toTerm = new RecipientTerm(RecipientType.TO, new InternetAddress(to));
messages = inbox.search(toTerm);
当脚本运行时,它在100次迭代循环中执行此操作,并暂停3秒。在重复打开imap调试的情况下,脚本输出失败时会显示以下内容:
A4 SEARCH TO loadtest_nmndbiwpdi@gmaildomain.com ALL
* SEARCH
A4 OK SEARCH completed (Success)
但是没有实际的结果。然而,在执行期间,我可以在gmail中搜索这个收件人,它会立即弹出。有什么建议可以弄清楚这件事吗?
发布于 2018-08-21 01:16:04
我实现了一个本地缓存。我在负载测试场景开始时初始化它,下载最近几天的消息并捕获最后的消息UID (使用gmail imap插件)。每当会话查找电子邮件时,它都会在本地缓存中查找。如果它不在那里,它会设置一个标志,以便其他会话不会与缓存重叠,并检索最新的消息。
因为它是间歇性的,所以我想给它几天。在过去的4天里,它运行得很完美。我也许可以做得更好一些,为新邮件设置一个监听程序,但现在我很满意gmail只返回‘成功’,而不是在连续搜索了这么多imap之后进行搜索。
感谢大家的反馈和建议!
发布于 2018-08-16 06:17:38
Gmail并没有完全实现IMAP规范,特别是在搜索方面。Gmail搜索总是搜索整个单词,尽管这在这里应该不是问题。
您可以尝试使用Gmail-specific support in JavaMail,例如GmailRawSearchTerm类。
https://stackoverflow.com/questions/51863628
复制相似问题