kompira enterpriseのメールチャネルによるメール削除について

コメント

5件のコメント

  • 正式なコメント
    Ichiro Takahashi

    フィックスポイントの高橋と申します。

    ジョブフローでメールチャネルを使ってメール受信をすると、内部的には以下のようなことが起きます。

    • メールサーバへのポーリングを開始して、メールボックスからメールを受信(および削除)して、Kompira のメールチャネルの内部キューに順次溜め込んでいきます。(これは下のジョブフローとは独立して動作します)
    • メールチャネルを受信するジョブでは(上のポーリングによって)1通受信したら(メールチャネルの内部キューから取り出して)その内容を $RESULT に格納して、次のジョブに継続します。

    すなわち、ジョブフローでのメールチャネルの受信待ちによって開始された、メールサーバへのポーリングによってその時点で受信できるメールをすべて取り込みます。これにより、1回目のジョブフローで3通ともクライアントから見えなくなりますし、2回目、3回目の実行ではすでにメールチャネルの内部キューに取り込まれたメールを取り出しているだけ、ということになります。

    参考になさってみてください。

    コメントアクション Permalink
  • nakagawa

    高橋さん、回答ありがとうございます。

    メールチャネルは、

    サーバーへポーリングし、サーバー内のメールの情報をキューへ貯めこむ。その際に指定したボックスのメールをすべて削除する

    メールチャネルを受信するジョブフローではキューから取り出して処理する

    と理解できました。

    そこでまた質問なのですが、キューの中身は恒久的に保持されると色々と面倒なので、

    内部キューの中身を明示的に削除することはできますでしょうか。

    重ね重ね申し訳ありませんが、ご回答のほどよろしくお願いいたします。

    0
    コメントアクション Permalink
  • Ichiro Takahashi

    > 内部キューの中身を明示的に削除することはできますでしょうか。

    ブラウザでメールチャネルの画面を開くと、「ステータス」というタブに「メッセージ数」という欄があります。そこに表示される数が内部キューに取り込まれているメールの数を示していて、その右にある「全て削除」というボタンを押下していただくと、全て削除することができます。

     

    0
    コメントアクション Permalink
  • nakagawa

    回答ありがとうございます。

    このキュー内の情報の詳細を見る事は出来るのでしょうか?

    また、ジョブフローやコマンドから削除して自動化に組み込むことは可能でしょうか?

    0
    コメントアクション Permalink
  • Ichiro Takahashi

    > このキュー内の情報の詳細を見る事は出来るのでしょうか?

    ブラウザ上から内容を確認することはできませんが、以下のコマンドで内部キューの先頭の内容を削除せずに取得することは可能です。

    $ /opt/kompira/bin/manage.py peek_channel チャネルオブジェクトのパス

    > また、ジョブフローやコマンドから削除して自動化に組み込むことは可能でしょうか?

    ジョブフローからであれば内部キューを示すフィールド message_queue に空配列を書き込むことで、「全て削除」と同等の処理を行うことが可能です。

    [chan = ./チャネルオブジェクト] ->
    [[]
    >> chan['message_queue']]

    コマンドでは上記の peek_channel を pop_channel に置き換えると、内部キューの先頭を取り出す(削除する)ことが可能ですが、一つずつの処理になるため「全て削除」とは同等にはなりません。

    0
    コメントアクション Permalink

サインインしてコメントを残してください。