第243章 Netty4 HTTP コンポーネント
Camel バージョン 2.14 以降で利用可能
netty4-http コンポーネントは、Netty4 による HTTP トランスポートを容易にする Netty4 コンポーネントの拡張機能です。
この camel コンポーネントは、プロデューサーエンドポイントとコンシューマーエンドポイントの両方をサポートします。
Netty はストリームベースです。つまり、受信した入力はストリームとして Camel に送信されます。つまり、ストリームのコンテンツを 一度 だけ読み取ることができます。
				Netty4 HTTP は、io.netty.handler.codec.http.HttpObjectAggregator を使用して、ストリーム全体をメモリーに読み込み、完全な http メッセージ全体をビルドします。ただし、結果のメッセージは、一度読み取り可能なストリームベースのメッセージのままです。
			
			もし、メッセージボディーが空のように見える場合や、何度もデータにアクセスする必要がある場合 (例: マルチキャストや再配送エラー処理) は、ストリームキャッシュを使用するか、何度再読み込みしても安全な String にメッセージボディーを変換します。
		
			Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
		
				InputStream がメッセージボディーとして使用され、大きなデータストリーム (たとえば、> 2 GB) を読み書きする必要がある場合は、disableStreamCache パラメーターを true に設定してストリーミングサポートを使用する必要があります。
			
例 1: サーバーへの大きなデータストリームのアップロード
例 2: サーバーからの大きなデータストリームのダウンロード
			ダウンロードの例では、基になるストリームハンドラーをブロックしないように、他のスレッドで InputStream から読み取る必要があります (asyncProcessStream を参照)。
		
243.1. URI 形式
netty コンポーネントの URI スキームは次のとおりです。
netty4-http:http://0.0.0.0:8080[?options]
netty4-http:http://0.0.0.0:8080[?options]
				URI には、?option=value&option=value&… の形式でクエリーオプションを追加できます。
			
					情報: クエリーパラメーターとエンドポイントオプション。Camel が URI クエリーパラメーターとエンドポイントオプションをどのように認識するのか疑問に思われるかもしれません。たとえば、次のようにエンドポイント URI を作成できます - netty4-http:http//example.com?myParam=myValue&compression=true。この例では、myParam が HTTP パラメーターであり、compression が Camel エンドポイントオプションです。このような状況で Camel が使用するストラテジーは、利用可能なエンドポイントオプションを解決し、それらを URI から削除することです。これは、前述の例の場合、compression エンドポイントオプションが解決され、ターゲット URL から削除されるため、Netty HTTP producer によってエンドポイントに送信された HTTP リクエストが http//example.com?myParam=myValue のようになることを意味します。また、動的ヘッダー (CamelHttpQuery など) を使用してエンドポイントオプションを指定できないことにも注意してください。エンドポイントオプションは、エンドポイント URI 定義レベル (DSL 要素 to または from など) でのみ指定できます。