ケータイメールTwitter投稿ツールをGAE/J→自宅サーバーに移した


先週末から今日の午前中くらいにかけて、Google App Engine for Java(GAE/J)で稼働していた「ケータイでメールを送信すると写真は画像サービスに、本文はTwitterに反映する」という自分用アプリをメンテナンスしていました。というのも、画像のファイルサイズがある程度以上大きくなってしまうとGAE/Jの実行時間制限(30秒)に引っかかって強制中断されてしまうことが結構あったのです。

しかもたちの悪いことに、強制中断されても画像自体は画像サービスに正しく反映される場合があるので、投稿をリトライさせるとその都度同じ画像が何度も投稿され、ちょっとしたDoS攻撃のように。GAE/Jの実行時間制限を回避するために処理を分割しようにも、画像サービス側が制限時間内に応答しないとなすすべなし。

さすがにこれはおっかないということで、自宅サーバー(CentOS)にJava+Tomcatをインストールしてそちらにアプリ一式を移植しました。DataStoreやら画像の変換やらGAE/Jに依存していた処理を削除し、シンプルに「メール受信→画像投稿→Twitter投稿」だけをする感じで。リトライ処理とかはバッサリ削除しましたが、今のところは順調なようです。自分しか使わないアプリなのでまあいいかとw。

ちなみに受信したメールをServletに受け渡す方法はこちらが参考になりました。

Servletでメール処理 (Utilz)