Clojure¶
Nginx-Clojure はis a NGINX module for embedding Clojure or Java or Groovy programs, typically those Ring based handlers.
幾つかの主な機能があります:
- Ringと互換性があり、当然Ringに基づいたCompojureなどのフレームワークをサポートします。
- httpサービスのための簡単なringハンドラーを書くために Clojure / Java / Groovy を使ってください。
- Use Clojure / Java / Groovy to write a simple NGINX rewrite handler to set var or return errors before proxy pass or content ring handler.
- Non-blocking coroutine based socket which is Compatible with Java Socket API and works well with largely existing java library such as apache http client, mysql jdbc drivers. この機能を使ってjavaのmainスレッドは多数の接続を扱うことができます。
- サブcoroutineで多数のソケットを並行して扱います。例えば、同時に二つのリモートサービスを起動することができます。
- 幾らかの進んだ使い方のためのソケットの非同期コールバックAPI。
- NGINXワーカーの起動時に初期化クロージャーコードを実行。
- ユーザ定義のhttpリクエストメソッドのサポート。
- NGINXの最新の安定バージョン1.6.0との互換性。(NGINX 1.4.x も大丈夫です。古いバージョンはテストされていませんが、動作するかも知れません)。
- NGINXの利点の一つに、ワーカープロセスがクラッシュした場合に自動的にマスタープロセスによって再起動されることがあります。
- クロージャーあるいはJavaコードから素早く動的コンテントを処理するために、lazyヘッダと、NGINXとJVM間の直接メモリ操作を使います。
- クロージャーあるいはJavaコードによって制御される静的なコンテントを素早く処理するために、NGINXのゼロコピーファイル送信機構を使います。
- Linux x64, Linux x86 32bit, Win32 および Mac OS X をサポートします。Win64 ユーザはそれを 32bit JRE/JDKで動作することもできます。
ちなみに、とても速いです。ベンチマークはここで見つけることができます。
詳細はnginx-clojure.github.io をたずねてください。