私はIMAP IDLE接続を有効に保つことに苦労してきました。 this Code Reviewによく似た私のコードは、ほとんどの場合動作しますが、メッセージの受信を停止することがあります。JavaMailのkeepConnectionAliveを使用してIMAP IDLE接続を維持する
はそれは次のようになります。
//... some code
ScheduledExecutorService keepAlive = Executors.newScheduledThreadPool(1);
Runnable toKeepAlive = new Runnable() {
public void run() {
keepAliveRunner();
}
};
keepAlive.scheduleAtFixedRate(toKeepAlive,
KEEP_ALIVE_FREQ,
KEEP_ALIVE_FREQ,
TimeUnit.MILLISECONDS);
//... other code ;)
}
public void keepAliveRunner() {
try {
imapFolder.doCommand(new IMAPFolder.ProtocolCommand() {
public Object doCommand(IMAPProtocol p)
throws ProtocolException {
p.simpleCommand("NOOP", null);
return null;
}
});
} catch (MessagingException e) {
e.printStackTrace();
}
}
私は、JavaMailののIMAPFolderクラスがkeepConnectionAliveメソッドを持っていることがわかりました。誰かがこの方法を使った経験があるかどうか疑問に思っていました。接続が1秒以上で使用されていない場合は、接続にnoopコマンドを発行します。
この方法は、Code Reviewのコードの代わりになるでしょうか?
あなたのコードとまったく同じことを行うと説明されているように、なぜあなたが尋ねているのかを理解するのは難しいです。 – EJP