第117章 Netty
Netty コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
重要
Camel Netty コンポーネントは JBoss Fuse 6.3 以降非推奨となり、今後のリリースで削除されます。代わりに新しい Camel Netty4 コンポーネントの使用に切り替える必要があります。
Camel 2.3 の時点で利用可能
Camel の Netty コンポーネントは、Netty プロジェクトに基づくソケット通信コンポーネントです。Netty は NIO クライアントサーバーフレームワークです。これにより、プロトコルサーバーやクライアントなどのネットワークアプリケーションを迅速かつ簡単に開発できます。Netty は、TCP や UDP ソケットサーバーなどのネットワークプログラミングを大幅に簡素化および合理化します。
ヒント
新しい Netty 4 を使用する Netty4 コンポーネントがあります。このコンポーネントは古い Netty 3 ライブラリーを使用するため、このコンポーネントを使用することが推奨されます。
この Camel コンポーネントは、プロデューサーとコンシューマーエンドポイントの両方をサポートします。
Netty コンポーネントには複数のオプションがあり、多くの TCP/UDP 通信パラメーター(バッファーサイズ、keepAlive、tcpNoDelay など)を詳細に制御し、Camel ルートでの In-Only および In-Out の両方の通信を容易にします。
Maven ユーザーは、このコンポーネントの
pom.xml に以下の依存関係を追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
netty コンポーネントの URI スキームは以下のとおりです。
netty:tcp://localhost:99999[?options] netty:udp://remotehost:99999/[?options]
netty:tcp://localhost:99999[?options]
netty:udp://remotehost:99999/[?options]
このコンポーネントは、TCP と UDP の両方のプロデューサーおよびコンシューマーエンドポイントをサポートします。
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | デフォルト値 | 説明 |
|---|---|---|
keepAlive
|
true
|
非アクティブのためにソケットが閉じられないように設定 |
tcpNoDelay
|
true
|
TCP プロトコルパフォーマンスを改善するための設定 |
backlog
|
Camel 2.9.6/2.10.4/2.11: netty コンシューマー(server)のバックログを設定できます。バックログは、OS に応じてベストエフォートであることに注意してください。このオプションを 200、500、1000 などの値に設定すると、TCP スタックは accept キューが何であるかを示します。このオプションが設定されていない場合、バックログは OS の設定によって異なります。
|
|
broadcast
|
false
|
UDP でマルチキャストを選択するための設定 |
connectTimeout
|
10000
|
ソケット接続が利用可能になるまでの待機時間。値はミリ秒単位です。 |
reuseAddress
|
true
|
ソケット多重化を容易にするための設定 |
sync
|
true
|
エンドポイントを一方向または request-response として設定するための設定 |
同期
|
false
|
Camel 2.10: 非同期ルーティングエンジンが使用さ れていないかどうか。その 後、非同期ルーティングエンジンが使用さ れ、true は同期処理を強制的に実行します。
|
ssl
|
false
|
SSL 暗号化をこのエンドポイントに適用するかどうかを指定するための設定 |
sslClientCertHeaders
|
false
|
Camel 2.12: 有効および SSL モードの場合、Netty コンシューマーはサブジェクト名、発行者名、シリアル番号、有効な日付範囲などのクライアント証明書が含まれるヘッダーで Camel メッセージ を強化します。 |
sendBufferSize
|
65536 バイト
|
アウトバウンド通信中に使用される TCP/UDP バッファーサイズ。サイズはバイトです。 |
receiveBufferSize
|
65536 バイト
|
インバウンド通信中に使用される TCP/UDP バッファーサイズ。サイズはバイトです。 |
option.XXX
|
null
|
Camel 2.11/2.10.4: 接頭辞としてoption. を使用して追加の netty オプションを設定できます。たとえば、"option.child.keepAlive=false" は netty オプション "child.keepAlive=false" を設定します。使用可能なオプションについては、Netty のドキュメントを参照してください。 |
corePoolSize
|
10
|
コンポーネントの起動時に割り当てられるスレッドの数。デフォルトは 10 です。注記: このオプションは Camel 2.9.2 以降から削除されます。Netty のデフォルト設定に依存するため、 |
maxPoolSize
|
100
|
このエンドポイントに割り当てることができるスレッドの最大数。デフォルトは 100 です。注記: このオプションは Camel 2.9.2 以降から削除されます。Netty のデフォルト設定に依存するため、 |
disconnect
|
false
|
使用直後に Netty チャネルから切断(閉じる)するかどうか。コンシューマーとプロデューサーの両方に使用できます。 |
lazyChannelCreation
|
true
|
チャネルは、Camel プロデューサーの開始時にリモートサーバーが稼働していない場合に例外を回避するために遅延して作成できます。 |
transferExchange
|
false
|
TCP にのみ使用されます。ボディーだけでなく、ネットワーク経由でエクスチェンジを転送することができます。以下のフィールドは転送されます:ボディー、Out body、Fault ボディー、In headers、Out ヘッダー、Fault ヘッダー、エクスチェンジプロパティー、エクスチェンジ例外。これには、オブジェクトがシリアライズ可能である必要があります。Camel はシリアル化できないオブジェクトを除外し、WARN レベルでログに記録します。 |
disconnectOnNoReply
|
true
|
sync が有効になっている場合、このオプションは NettyConsumer を指示します。この場合、返信の応答がない場合、このオプションは NettyConsumer を切断します。 |
noReplyLogLevel
|
WARN
|
sync が有効になっている場合、このオプションは NettyConsumer を決定し、送信応答がない場合に使用するロギングレベルを指定します。値は FATAL、ERROR、INFO、DEBUG、OFF です。
|
serverExceptionCaughtLogLevel
|
WARN
|
Camel 2.11.1: サーバー(NettyConsumer)が例外をキャッチする場合、このロギングレベルを使用してログに記録されます。 |
serverClosedChannelExceptionCaughtLogLevel
|
DEBUG
|
Camel 2.11.1: サーバー(NettyConsumer)が java.nio.channels.ClosedChannelException を取得する場合、このロギングレベルを使用してログに記録されます。これは、クライアントが突然切断され、Netty サーバーで閉じられた例外が発生する可能性があるため、閉じられたチャンネル例外を記録しないようにするために使用されます。
|
allowDefaultCodec
|
true
|
Camel 2.4: netty コンポーネントは、エンコーダー/ダンダーの両方が null で、テキストラインが false の場合にデフォルトのコーデックをインストールします。allowDefaultCodec を false に設定すると、netty コンポーネントがフィルターチェーンの最初の要素としてデフォルトの codec をインストールできなくなります。 |
textline
|
false
|
Camel 2.4: TCP にのみ使用されます。codec が指定されていない場合、このフラグを使用してテキスト行ベースのコーデックを示すことができます。指定されていない場合、または値が false の場合、Object Serialization は TCP 経由で想定されます。 |
delimiter
|
LINE
|
Camel 2.4: テキストラインコーデックに使用する区切り文字。使用できる値は LINE および NULL です。
|
decoderMaxLineLength
|
1024
|
Camel 2.4: テキストラインコーデックに使用する最大行の長さ。 |
autoAppendDelimiter
|
true
|
Camel 2.4: テキストラインコーデックを使用して送信する際に、不足している終了区切り文字を自動追加するかどうか。 |
encoding
|
null
|
Camel 2.4: テキストラインコーデックに使用するエンコーディング(文字セット名)。指定しない場合、Camel は JVM のデフォルト Charset を使用します。 |
workerCount
|
null
|
Camel 2.9: netty が nio モードで動作している場合、Netty は cpu_core_threads*2 である Netty のデフォルトの workerCount パラメーターを使用します。ユーザーはこの操作を使用して Netty からデフォルトの workerCount を上書きできます。 |
sslContextParameters
|
null
|
Camel 2.9: org.apache.camel.util.jsse.SSLContextParameters インスタンスを使用した SSL 設定。Using the JSSE Configuration Utility を参照してください。
|
receiveBufferSizePredictor
|
null
|
Camel 2.9: バッファーサイズ予測を設定します。詳細は Jetty のドキュメント および この メールスレッド を参照してください。 |
requestTimeout
|
0
|
Camel 2.11.1: リモートサーバーを呼び出すときに Netty プロデューサーのタイムアウトを使用できます。デフォルトでは、タイムアウトは使用されません。値はミリ秒単位です。requestTimeout オプションは Netty の ReadTimeoutHandler を使用してタイムアウトをトリガーします。Camel 2.16、2.12.1.3: は、CamelNettyRequestTimeout ヘッダーを設定してこの設定を上書きすることもできます。
|
needClientAuth
|
false
|
Camel 2.11: SSL の使用時にサーバーがクライアント認証を必要とするかどうかを設定します。 |
orderedThreadPoolExecutor
|
true
|
Camel 2.10.2: 順序付けされたスレッドプールを使用して、イベントが同じチャネルで順番に処理されるかどうか。詳細は、org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor の netty javadoc の詳細を参照してください。
|
maximumPoolSize
|
16
|
Camel 2.10.2: 順序付けされたスレッドプールが使用されている場合のコアプールサイズ。 |
producerPoolEnabled
|
true
|
Camel 2.10.4/Camel 2.11: プロデューサーのみ。プロデューサープールが有効かどうか。重要: 同時実行性と信頼できるリクエスト/リプライを処理するのにプーリングが必要になるため、この機能をオフにしないでください。 |
producerPoolMaxActive
|
-1
|
Camel 2.10.3: プロデューサーのみ。プールが割り当てることができるオブジェクト数の上限を設定します(クライアントに対してチェックするか、チェックアウトをアイドリングします)。制限なしには負の値を使用してください。 |
producerPoolMinIdle
|
0
|
Camel 2.10.3: プロデューサーのみ。エビクタースレッド(アクティブな場合)が新しいオブジェクトを生成する前に、プロデューサープールで許可されるインスタンスの最小数を設定します。 |
producerPoolMaxIdle
|
100
|
Camel 2.10.3: プロデューサーのみ。プール内のアイドリングインスタンスの数の上限を設定します。 |
producerPoolMinEvictableIdle
|
300000
|
Camel 2.10.3: プロデューサーのみ。アイドルオブジェクトのエビクターによるエビクションの対象となる前に、オブジェクトがプールでアイドル状態にある可能性のある最小時間(ミリ秒単位)を設定します。 |
bootstrapConfiguration
|
null
|
Camel 2.12: コンシューマーのみ。org.apache.camel.component.netty.NettyServerBootstrapConfiguration インスタンスを使用して Netty ServerBootstrap オプションを設定できます。これは、複数のコンシューマーで同じ設定を再利用するために使用できます。これにより、設定をより簡単に調整できます。
|
bossGroup
|
null
|
Camel 2.12: 明示的な org.jboss.netty.channel.socket.nio.BossPool を boss スレッドプールとして使用する。たとえば、スレッドプールを複数のコンシューマーと共有するには、以下を実行します。デフォルトでは、各コンシューマーには 1 コアスレッドを持つ独自の boss プールがあります。
|
workerGroup
|
null
|
Camel 2.12: 明示的な org.jboss.netty.channel.socket.nio.WorkerPool をワーカースレッドプールとして使用する。たとえば、スレッドプールを複数のコンシューマーと共有するには、以下を実行します。デフォルトでは、各コンシューマーには 2 x cpu count コアスレッドを持つ独自のワーカープールがあります。
|
channelGroup
|
null
|
Camel 2.17: 明示的な io.netty.channel.group.ChannelGroupを使用して、メッセージを複数のチャネルに広げるには。
|
networkInterface
|
null
|
Camel 2.12: コンシューマーのみ。UDP を使用する場合、このオプションを使用して、マルチキャストグループに参加する eth0 などの名前でネットワークインターフェイスを指定できます。
|
udpConnectionlessSending
|
false
|
Camel 2.15: プロデューサーのみ。このオプションは、接続なしの UDP 送信をサポートします。これは genuine fire-and-forget です。UDP 送信試行は、
PortUnreachableException 例外を受け取ります(受信ポートでリッスンしているものがない場合)。
|
clientMode
|
false
|
Camel 2.15: コンシューマーのみ。clientMode が true の場合、Netty コンシューマーは TCP クライアントとしてアドレスに接続します。
|
useChannelBuffer
|
false
|
Camel 2.16: プロデューサーのみ。useChannelBuffer が true の場合、Netty プロデューサーはメッセージ本文を channelBuffer に切り替えてから送信します。
|
レジストリーベースのオプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Codec ハンドラーおよび SSL キーストアは、Spring XML ファイルの など、レジストリー に登録できます。渡すことができる値は次のとおりです。
| 名前 | 説明 |
|---|---|
passphrase
|
SSH を使用して送信されたペイロードの暗号化/復号化に使用するパスワード設定 |
keyStoreFormat
|
ペイロードの暗号化に使用されるキーストア形式。設定されていない場合、デフォルトは JKS です。 |
securityProvider
|
ペイロードの暗号化に使用するセキュリティープロバイダー。設定されていない場合、デフォルトは SunX509 です。 |
keyStoreFile
|
非推奨: 暗号化に使用されるクライアント側の証明書キーストア |
trustStoreFile
|
非推奨: 暗号化に使用されるサーバー側の証明書キーストア |
keyStoreResource
|
Camel 2.11.1: 暗号化に使用されるクライアント側の証明書キーストア。デフォルトではクラスパスからロードされますが、"classpath:"、"file:"、または "http:" をプレフィックとして指定して、異なるシステムからリソースをロードすることもできます。
|
trustStoreResource
|
Camel 2.11.1: 暗号化に使用されるサーバー側の証明書キーストア。デフォルトではクラスパスからロードされますが、"classpath:"、"file:"、または "http:" をプレフィックとして指定して、異なるシステムからリソースをロードすることもできます。
|
sslHandler
|
SSL ハンドラーを返すために使用できるクラスへの参照 |
encoder
|
アウトバウンドペイロードの特別なマーシャリングを実行するために使用できるカスタム ChannelHandler クラス。org.jboss.netty.channel.ChannelDownStreamHandler をオーバーライドする必要があります。
|
encorders
|
使用するエンコーダーのリスト。コンマ区切りの値を持つ文字列を使用し、値をレジストリー で検索でき ます。Camel がルックアップする必要があることを認識できるように、値の前に # を付けることを忘れないでください。 |
decoder
|
インバウンドペイロードの特別なマーシャリングを実行するために使用できるカスタム ChannelHandler クラス。Must override org.jboss.netty.channel.ChannelUpStreamHandler.decoder が定義されていない場合、Netty はデフォルトで ObjectDecoder クラスを介してシリアライズされた Java オブジェクトに設定されます。別の形式が想定される場合は、デコーダーを指定する必要があります。
|
decoders
|
使用するデコーダーのリスト。コンマ区切りの値を持つ文字列を使用し、値をレジストリー で検索でき ます。Camel がルックアップする必要があることを認識できるように、値の前に # を付けることを忘れないでください。 |
重要: 共有不可能なエンコーダー/デコーダーの使用について以下をお読みください。
Netty エンドポイントとの間でメッセージを送信する リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Netty プロデューサー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Producer モードでは、コンポーネントは TCP または UDP プロトコル(オプションの SSL サポートあり)を使用して、ソケットエンドポイントにペイロードを送信する機能を提供します。
プロデューサーモードは、一方向および要求応答ベースの操作の両方をサポートします。
Netty コンシューマー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Consumer モードでは、コンポーネントは以下を行う機能を提供します。
- TCP または UDP プロトコル(任意の SSL サポートあり)を使用して、指定したソケットでリッスンします。
- text/xml、バイナリー、およびシリアライズされたオブジェクトベースのペイロードを使用して、ソケットで要求を受信します。
- それらをメッセージ交換としてルートに送信します。
コンシューマーモードは、一方向および要求応答ベースの操作の両方をサポートします。
Headers リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Netty コンシューマーによって作成されたエクスチェンジについて、以下のヘッダーが入力されます。
| ヘッダーのキー | クラス | 説明 |
|---|---|---|
NettyConstants.NETTY_CHANNEL_HANDLER_CONTEXT / CamelNettyChannelHandlerContext | org.jboss.netty.channel.ChannelHandlerContext | ChannelHandlerContext Netty によって受信される接続に関連付けられたインスタンス。 |
NettyConstants.NETTY_MESSAGE_EVENT / CamelNettyMessageEvent | org.jboss.netty.channel.MessageEvent | MessageEvent Netty によって受信される接続に関連付けられたインスタンス。 |
NettyConstants.NETTY_REMOTE_ADDRESS / CamelNettyRemoteAddress | java.net.SocketAddress | 着信ソケット接続のリモートアドレス。 |
NettyConstants.NETTY_LOCAL_ADDRESS / CamelNettyLocalAddress | java.net.SocketAddress | 着信ソケット接続のローカルアドレス。 |
Request-Reply およびシリアライズされたオブジェクトペイロードを使用した UDP Netty エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
一方向通信を使用した TCP ベースの Netty コンシューマーエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Request-Reply 通信を使用する SSL/TCP ベースの Netty コンシューマーエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
JSSE 設定ユーティリティーの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.9 の時点で、Netty コンポーネントは を介して SSL/TLS 設定をサポートし http://camel.apache.org/camel-configuration-utilities.html ます。このユーティリティーは、作成する必要のあるコンポーネント固有のコードの量を大幅に減らし、エンドポイントおよびコンポーネントレベルで設定可能です。 以下の例は、Netty コンポーネントで ユーティリティーを使用する方法を示しています。
コンポーネントのプログラムによる設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントの Spring DSL ベースの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Jetty コンポーネントでの基本的な SSL/TLS 設定の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
SSLSession およびクライアント証明書へのアクセス リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.12 以降で利用可能
たとえば、クライアント証明書の詳細を取得する必要がある場合は、
javax.net.ssl.SSLSession にアクセスできます。ssl=true の場合、Netty コンポーネントは以下のように SSLSession を Camel Message のヘッダーとして保存します。
SSLSession session = exchange.getIn().getHeader(NettyConstants.NETTY_SSL_SESSION, SSLSession.class); // get the first certificate which is client certificate javax.security.cert.X509Certificate cert = session.getPeerCertificateChain()[0]; Principal principal = cert.getSubjectDN();
SSLSession session = exchange.getIn().getHeader(NettyConstants.NETTY_SSL_SESSION, SSLSession.class);
// get the first certificate which is client certificate
javax.security.cert.X509Certificate cert = session.getPeerCertificateChain()[0];
Principal principal = cert.getSubjectDN();
needClientAuth=true を設定してクライアントを認証します。設定しないと、SSLSession はクライアント証明書に関する情報にアクセスできず、例外 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated が発生する可能性があります。クライアント証明書の有効期限が切れている場合や無効な場合は、この例外が発生する場合もあります。
ヒント
sslClientCertHeaders オプションは true に設定でき、クライアント証明書に関する詳細が含まれるヘッダーで Camel Message を補完します。たとえば、サブジェクト名は、ヘッダー CamelNettySSLClientCertSubjectName で簡単に利用できます。
複数のコーデックの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
特定のケースでは、エンコーダーとデコーダーのチェーンを netty パイプラインに追加する必要がある場合があります。multpile codecs を camel netty エンドポイントに追加するには、encoders およびdecoders URI パラメーターを使用する必要があります。encoder パラメーターおよびdecoder パラメーターと同様に、パイプラインに追加する必要のある ChannelUpstreamHandlers および ChannelDownstreamHandlers のリストへの参照を提供するために使用されます。エンコーダーを指定すると、デコーダーやデコーダーパラメーターと同様にエンコーダーパラメーターが無視されます。
重要
共有不可能なエンコーダー/デコーダーの使用について、上記を参照してください。
エンドポイントの作成時に解決できるように、コーデックのリストを Camel のレジストリーに追加する必要があります。
Spring のネイティブコレクションサポートを使用して、アプリケーションコンテキストでコーデックリストを指定できます。
Bean 名は、コンマ区切りリストとして、または List に含めるか、netty エンドポイント定義で使用できます。
または spring を使用します。
完了したらチャンネルを閉じる リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
サーバーとして動作する場合は、クライアントの変換が終了する場合などにチャネルを閉じることがあります。これを行うには、エンドポイントオプション
disconnect=true を設定します。
ただし、以下のようにメッセージごとに Camel に指示することもできます。Camel に対してチャネルを閉じるよう指示するには、
CamelNettyCloseChannelWhenComplete キーを持つヘッダーをブール値 true に追加する必要があります。たとえば、以下の例では、bye メッセージをクライアントに書き戻した後にチャンネルを閉じます。
作成されたパイプラインを完全に制御するためのカスタムチャネルパイプラインファクトリーの追加 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.5 で利用可能
カスタムチャネルパイプラインは、カスタムハンドラーを挿入してハンドラー/インターセプターチェーンを完全に制御します。これは、Netty Endpoint URL で指定しなくても、エンコーダーとデコーダーを簡単に指定します。
カスタムパイプラインを追加するには、カスタムチャネルパイプラインファクトリーを作成し、コンテキストレジストリー(JNDIRegistry、または camel-spring ApplicationContextRegistry など)でコンテキストに登録する必要があります。
カスタムパイプラインファクトリーは以下のように構築する必要があります。
- Producer リンクされたチャネルパイプラインファクトリーは、
ClientPipelineFactoryの抽象クラスを拡張する必要があります。 - Consumer リンクされたチャネルパイプラインファクトリーは、
ServerPipelineFactoryの抽象クラスを拡張する必要があります。 - クラスは、カスタムハンドラー、エンコーダー、およびデコーダーを挿入するために、getPipeline ()メソッドを上書きする必要があります。getPipeline ()メソッドを上書きしない場合、ハンドラー、エンコーダー、またはデコーダーのないパイプラインがパイプラインに有線されます。
以下の例は、ServerChannel Pipeline ファクトリーを作成する方法を示しています。
カスタムパイプラインファクトリーの使用
次に、カスタムチャネルパイプラインファクトリーをレジストリーに追加し、以下のように Camel ルートでインスタンス化/活用できます。
Netty boss およびワーカースレッドプールの再利用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.12 以降で利用可能
Netty には boss と worker の 2 種類のスレッドプールがあります。デフォルトでは、各 Netty コンシューマーおよびプロデューサーにはプライベートスレッドプールがあります。複数のコンシューマーまたはプロデューサー間でこれらのスレッドプールを再利用する場合は、スレッドプールを作成し、レジストリー に登録する必要があり ます。
たとえば、Spring XML を使用する場合は、以下のように 2 つのワーカースレッドを持つ
NettyWorkerPoolBuilder を使用して共有ワーカースレッドプールを作成できます。
ヒント
boss スレッドプールの場合は、Netty コンシューマーには
org.apache.camel.component.netty.NettyServerBossPoolBuilder ビルダーと、Netty 生成用の org.apache.camel.component.netty.NettyClientBossPoolBuilder があります。
Camel ルートでは、以下のように URI で
workerPool オプションを設定することで、このワーカープールを参照できます。
別のルートがある場合は、共有ワーカープールを参照できます。
... など。
その他の参考資料 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!