239.7. 同じポートで複数のルートを使用する
同じ CamelContext で、同じポート (org.jboss.netty.bootstrap.ServerBootstrap
インスタンスなど) を共有する Netty HTTP からの複数のルートを持つことができます。ルートは同じ org.jboss.netty.bootstrap.ServerBootstrap
インスタンスを共有するため、これを行うには、ルート内で多数のブートストラップオプションを同一にする必要があります。インスタンスは、最初に作成されたルートのオプションで設定されます。
ルートが同一に設定される必要があるオプションは、org.apache.camel.component.netty.NettyServerBootstrapConfiguration
設定クラスで定義されているすべてのオプションです。異なるオプションで別のルートを設定した場合、Camel は起動時に例外を出力し、オプションが同一でないことを示します。これを軽減するには、すべてのオプションが同一であることを確認してください。
同じポートを共有する 2 つのルートの例を次に示します。
同じポートを共有する 2 つのルート
from("netty-http:http://0.0.0.0:{{port}}/foo") .to("mock:foo") .transform().constant("Bye World"); from("netty-http:http://0.0.0.0:{{port}}/bar") .to("mock:bar") .transform().constant("Bye Camel");
そして、これは、1 番目のルートと同じ org.apache.camel.component.netty.NettyServerBootstrapConfiguration
オプションを持たない、誤って設定された 2 番目のルートの例です。これにより、Camel は起動時に失敗します。
2 つのルートが同じポートを共有しているが、2 番目のルートが正しく設定されておらず、起動に失敗する
from("netty-http:http://0.0.0.0:{{port}}/foo") .to("mock:foo") .transform().constant("Bye World"); // we cannot have a 2nd route on same port with SSL enabled, when the 1st route is NOT from("netty-http:http://0.0.0.0:{{port}}/bar?ssl=true") .to("mock:bar") .transform().constant("Bye Camel");
239.7.1. 複数のルートで同じサーバーのブートストラップ設定を再利用する
org.apache.camel.component.netty.NettyServerBootstrapConfiguration
タイプの単一インスタンスで共通サーバーブートストラップオプションを設定することにより、Netty HTTP コンシューマーで bootstrapConfiguration
オプションを使用して、すべてのコンシューマーで同じオプションを参照および再利用できます。
<bean id="nettyHttpBootstrapOptions" class="org.apache.camel.component.netty.NettyServerBootstrapConfiguration"> <property name="backlog" value="200"/> <property name="connectTimeout" value="20000"/> <property name="workerCount" value="16"/> </bean>
そしてルートでは、以下に示すようにこのオプションを参照します
<route> <from uri="netty-http:http://0.0.0.0:{{port}}/foo?bootstrapConfiguration=#nettyHttpBootstrapOptions"/> ... </route> <route> <from uri="netty-http:http://0.0.0.0:{{port}}/bar?bootstrapConfiguration=#nettyHttpBootstrapOptions"/> ... </route> <route> <from uri="netty-http:http://0.0.0.0:{{port}}/beer?bootstrapConfiguration=#nettyHttpBootstrapOptions"/> ... </route>
239.7.2. OSGi コンテナー内の複数のバンドルにまたがる複数のルートで同じサーバーのブートストラップ設定を再利用する
詳細とその方法の例については、Netty HTTP サーバーの例を参照してください。