TCPコネクタを使ってESB Muleイベントの送受信をTCPを使って行うことができます。
このトランスポート・プロバイダのJavadocはここにあります。
ソースコードはここになります。
TCPコネクタのプロパティ
| プロパティ |
説明 |
デフォルト |
必須 |
| receiveTimeout |
受信ソケットの読込みタイムアウト(SO_TIMEOUT)。 |
Socket Default |
× |
| sendTimeout |
送信ソケットの読込みタイムアウト(SO_TIMEOUT)。 |
Socket Default |
× |
| timeout |
読込みと書込みタイムアウトの 両方 を設定する。このプロパティを設定するか、receiveTimeout/sendTimeoutを設定します。 |
Socket Default |
× |
| bufferSize |
データの読書き用バッファーの大きさ。 |
Socket Default |
× |
| backlog |
ServerSocketの最大キューの長さ。受信コネクションのみに有効。 |
ServerSocket Default |
× |
| tcpProtocol |
TcpProtocolインターフェースの実装。 |
|
× |
| tcpProtocolClassName |
TcpProtocolインターフェースのクラス名。 |
org.mule.providers.tcp.protocols.DefaultProtocol |
× |
| keepSendSocketOpen |
複数ディスパッチ用にソケットを開いて置くか。送信コネクションのみに有効。 |
false |
× |
| keepAlive |
開いているソケットにSO_KEEPALIVEを有効にする。長い間、開いていて利用されていないソケットを自動的にチェックして、コネクションが無くなった場合に閉じる。 |
false |
× |
maxRetryCount |
削除:コネクタのリトライ設定には、コネクションの戦略を使ってください。 |
- |
- |
| validateConnections 1 |
初めて使う時にポートを確認するために、ソケットを瞬時に開いて閉める。 |
true |
× |
エンドポイント
TCPエンドポイントは以下のようなソケット・エンドポイントとして指定します:
トランスフォーマー
トランスフォーマーが明示的にプロバイダに指定されていない限り、以下のトランスフォーマーがデフォルトで使われます:
| トランスフォーマー |
説明 |
| ByteArrayToString |
byte配列をStringに変換する。 |
| StringToByteArray |
Stringをbyte配列に変換する。 |
プロトコル
他アプリケーションにデータを転送する場合は、独自のアプリケーション・プロトコールを利用する必要がある場合があります。多くのデータを転送する場合や、遅い回線を利用する場合にデータを分割させないので便利です。このプロトコルはTcpProtocolインターフェースで処理がされます。
プロトコールの実装を設定する必要がない場合は、以下のように記述することができます:
<connector name="tcpConnector" className="org.mule.providers.tcp.TcpConnector">
<properties>
<property name="tcpProtocolClassName" value="org.mule.providers.tcp.protocols.LengthProtocol"/>
</properties>
</connector>
又は、コンテナのビーンを使うことができます:
<connector name="tcpConnector" className="org.mule.providers.tcp.TcpConnector">
<properties>
<container-property name="tcpProtocol" reference="myProtocol"/>
</properties>
</connector>
| プロトコル |
説明 |
| org.mule.providers.tcp.protocols.DefaultProtocol |
バッファーに 一時的 にデータが無くなるまでデータを読込む。(unsafe 2) |
| org.mule.providers.tcp.protocols.LengthProtocol |
バイト・ストリームの先頭に長さと指定されたバイトを読書きする。 |
| org.mule.providers.tcp.protocols.EOFProtocol |
ストリームが閉じられるまでデータを読む(1つのメッセージ・トランスポートの場合) |
| org.mule.providers.tcp.protocols.MuleMessageProtocol |
ESB Mule Messageオブジェクトを完全に読書きし(ただ、ペイロードだけではなく)、correlation IDのようなメタデータ情報を残す。 (unsafe 2) |
| org.mule.providers.tcp.protocols.MuleMessageEOFProtocol 1 |
MuleMessageProtocolとEOFProtocolを組合わせる。 |
| org.mule.providers.tcp.protocols.MuleMessageLengthProtocol 1 |
MuleMessageProtocolとLengthProtocolを組合わせる。 |
| org.mule.providers.tcp.protocols.XmlMessageProtocol |
XML文またはバッファーが空になったら接頭辞<?xmlで区切る。(unsafe 2) |
| org.mule.providers.tcp.protocols.XmlMessageEOFProtocol 1 |
XML文またはストリームが閉じる場合に接頭辞<?xmlで区切る。(EOFProtocolでは利用できないような、複数のメッセージがある場合に利用できる。) |
1 Subversionのみ
2 TCPはデータのグルーピング及び読書き間のギャップを保証しない。1つのメッセージのデータは複数の塊で受信される場合がある。unsafeなプロトコルはこのようなfragmentedメッセージを処理することができない。