HTTP timeout の設定
AP4R に put されたメッセージは、dispatcher と呼ばれるスレッドによって、メッセージのヘッダ部分に指定された宛先に送信されます。
このときデフォルトは HTTP PUT をプロトコルとして使用しますが、従来のバージョンでは、タイムアウトの設定がありませんでした。このため、非同期処理の実行先で処理が終わらない状態になると、その処理を送信した dispatcher スレッドが占有されたままになる恐れがありました。
dispatcher の数を少なく設定している場合は痛いです。
で、パッチをいただきましたので、昨日リリースした ap4r-0.3.6 に取り込みました。
以下のように設定ファイルを記述すると HTTP の read 待ちを制限できます。
単位は秒です。
--- dispatchers: - targets: queue.* threads: 1 http: timeout: 600
今のとここれだけですが、
も今後のバージョンで検討しています。
前者のグローバルな設定というのは下記のようなイメージです。これですべての HTTP dispatcer が影響を受けることになります。
(個別に dispatcher ごとに設定している場合はそちらが優先、のつもり)
--- dispatchers: - targets: queue.* threads: 1 dispatch_protocols: http: timeout: 600
ただ...、dispatch_protocols という名前がいまひとつかなぁという気もしています。
もっといいネーミング or もっといい解決案ってありますかね? (^^;