kompira enterpriseのメールチャネルによるメール削除について
こんにちは
kompiraのメールチャネルによるメール受信について質問です。
取得先メールボックスにメールが3通ある場合、メールチャネルを使ったジョブフロー(以下ジョブフローとだけ記載します)を1度実行すると、メールボックス内から古い1通が消える
という認識なのですが、1回のジョブフロー実行で3通ともクライアントから見えなくなってしまいます。
2回目、3回目のジョブフロー実行で2通目、3通目の内容は取得できています。
1回目のジョブフロー実行で3通ともクライアントから見えなくなってしまう原因について、何か原因は考えられますでしょうか?
ご回答のほどよろしくお願いいたします。
・環境
kompira 1.6.2.post1
メールクライアント outlook(WEB版、デスクトップ版)
-
正式なコメント
フィックスポイントの高橋と申します。
ジョブフローでメールチャネルを使ってメール受信をすると、内部的には以下のようなことが起きます。
- メールサーバへのポーリングを開始して、メールボックスからメールを受信(および削除)して、Kompira のメールチャネルの内部キューに順次溜め込んでいきます。(これは下のジョブフローとは独立して動作します)
- メールチャネルを受信するジョブでは(上のポーリングによって)1通受信したら(メールチャネルの内部キューから取り出して)その内容を $RESULT に格納して、次のジョブに継続します。
すなわち、ジョブフローでのメールチャネルの受信待ちによって開始された、メールサーバへのポーリングによってその時点で受信できるメールをすべて取り込みます。これにより、1回目のジョブフローで3通ともクライアントから見えなくなりますし、2回目、3回目の実行ではすでにメールチャネルの内部キューに取り込まれたメールを取り出しているだけ、ということになります。
参考になさってみてください。
コメントアクション -
> このキュー内の情報の詳細を見る事は出来るのでしょうか?
ブラウザ上から内容を確認することはできませんが、以下のコマンドで内部キューの先頭の内容を削除せずに取得することは可能です。
$ /opt/kompira/bin/manage.py peek_channel チャネルオブジェクトのパス
> また、ジョブフローやコマンドから削除して自動化に組み込むことは可能でしょうか?
ジョブフローからであれば内部キューを示すフィールド message_queue に空配列を書き込むことで、「全て削除」と同等の処理を行うことが可能です。
[chan = ./チャネルオブジェクト] ->
[[] >> chan['message_queue']]コマンドでは上記の peek_channel を pop_channel に置き換えると、内部キューの先頭を取り出す(削除する)ことが可能ですが、一つずつの処理になるため「全て削除」とは同等にはなりません。
サインインしてコメントを残してください。
コメント
5件のコメント