Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第149章 sip
SIP コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.5 で利用可能
Camel の sip コンポーネントは Jain SIP 実装をベースとする通信コンポーネントです(JCP ライセンスで利用可能)。
Session Initiation Protocol (SIP)は IETF 定義のシグナリングプロトコルで、音声や IP (インターネットプロトコル)によるビデオコール(IP)などのマルチメディア通信セッションを制御するために広く使用されています。SIP プロトコルは、基盤となるトランスポート層から独立するように設計されたアプリケーションレイヤープロトコルで、Transmission Control Protocol (TCP)、User Datagram Protocol (UDP)、または Stream Control Transmission Protocol (SCTP)で実行できます。
Jain SIP 実装は TCP および UDP のみをサポートしています。
Camel SIP コンポーネントは、RFC3903 - Session Initiation Protocol (SIP) Extension for Eventで説明されているように、SIP Publish および Subscribe 機能 のみ をサポートします。
この Camel コンポーネントは、プロデューサーとコンシューマーエンドポイントの両方をサポートします。
Camel SIP Producers (Event Publishers)および SIP Consumers (Event Subscribers)は、SIP Presence Agent (ステートフルブローカー処理エンティティー)と呼ばれる中間エンティティーを使用してイベントと状態情報を相互に通信します。
SIP ベースの通信では、リスナーのある SIP スタックを SIP プロデューサーとコンシューマーの両方でインスタンス化する 必要 があります(localhost を使用する場合は別のポートを使用します)。これは、通信中に SIP スタック間で交換されるハンドシェイクと確認応答をサポートするために必要です。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
sip エンドポイントの URI スキームは以下のとおりです。
sip://johndoe@localhost:99999[?options] sips://johndoe@localhost:99999/[?options]
sip://johndoe@localhost:99999[?options]
sips://johndoe@localhost:99999/[?options]
このコンポーネントは、TCP と UDP の両方のプロデューサーおよびコンシューマーエンドポイントをサポートします。
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
SIP コンポーネントは、SIP プロトコルを介して状態を伝播するために必要なカスタムステートフルヘッダーを作成するための幅広い設定オプションと機能を提供します。
名前 | デフォルト値 | 説明 |
---|---|---|
stackName
|
NAME_NOT_SET
|
SIP エンドポイントに関連付けられた SIP Stack インスタンスの名前。 |
transport
|
tcp
|
Configuring for choice of transport potocol.有効な選択肢は tcp またはudp です。 |
fromUser
|
メッセージの送信元のユーザー名。レジストリーベースのカスタム FromHeader が指定されていない限り、必須設定。 | |
fromHost
|
メッセージの送信元のホスト名。レジストリーベースの FromHeader が指定されていない限りの設定 | |
fromPort
|
メッセージの送信元のポート。レジストリーベースの FromHeader が指定されていない限りの設定 | |
toUser
|
メッセージレシーバーのユーザー名。レジストリーベースのカスタム ToHeader が指定されていない限りの設定。 | |
toHost
|
メッセージレシーバーのホスト名。レジストリーベースの ToHeader が指定されていない限りの設定 | |
toPort
|
メッセージレシーバーの portName。レジストリーベースの ToHeader が指定されていない限りの設定 | |
maxforwards
|
0 | メッセージをメッセージの受信者に転送することができる中間者の数。オプションの設定。または、をレジストリーベースの MaxForwardsHeader として使用して設定することもできます。 |
eventId
|
文字列ベースのイベント ID の設定。レジストリーベースの FromHeader が指定されていない限りの設定 | |
eventHeaderName
|
文字列ベースのイベント ID の設定。レジストリーベースの FromHeader が指定されていない限りの設定 | |
maxMessageSize
|
1048576
|
最大許容メッセージサイズ(バイト単位)の設定。 |
cacheConnections
|
false
|
接続作成のコストを削減するには、SipStack が接続をキャッシュする必要があります。これは、接続が長時間実行される会話に使用される場合に便利です。 |
consumer
|
false
|
この設定は、このエンドポイントに作成する必要があるヘッダーの種類(FromHeader、ToHeader など)を決定するために使用されます。 |
automaticDialogSupport
|
off
|
を設定し、すべての通信をダイアログに関連付けるかどうかを指定します。 |
contentType
|
text
|
contentType の設定は、有効な MimeType に設定できます。 |
contentSubType
|
xml
|
contentSubType の設定は、有効な MimeSubType に設定できます。 |
receiveTimeoutMillis
|
10000
|
応答や確認応答を待機する時間を指定するための設定は、別の SIP スタックから受信できます。 |
useRouterForAllUris
|
false
|
この設定は、要求がプロキシー経由で Presence Agent に送信される場合に使用されます。 |
msgExpiration
|
3600
|
エンドポイントで受信されるメッセージが有効とみなされる時間 |
presenceAgent
|
false
|
この設定は、Presence Agent とコンシューマー間の非表示に使用されます。これは、SIP Camel コンポーネントに基本的な Presence Agent (テスト目的のみ)が同梱されるという事実によるものです。コンシューマーはこのフラグを true に設定する必要があります。 |
レジストリーベースのオプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
SIP では、要求の一部として送信/受信される多数のヘッダーが必要です。これらの SIP ヘッダーは、Spring XML ファイルなどのレジストリーに登録できます。
渡すことができる値は次のとおりです。
名前 | 説明 |
---|---|
fromHeader
|
メッセージ送信元設定を含むカスタム Header オブジェクト。タイプ javax.sip.header.FromHeader を実装する必要があります。 |
toHeader
|
メッセージのレシーバー設定を含むカスタム Header オブジェクト。タイプ javax.sip.header.ToHeader を実装する必要があります。 |
viaHeaders
|
javax.sip.header.ViaHeader タイプのカスタム Header オブジェクトのリスト。各 ViaHeader には要求転送のプロキシーアドレスが含まれます。(リクエストがリスナーに到達すると、このヘッダーは各プロキシーによって自動的に更新されます) |
contentTypeHeader
|
メッセージコンテンツの詳細を含むカスタム Header オブジェクト。タイプ javax.sip.header.ContentTypeHeader を実装する必要があります。 |
callIdHeader
|
呼び出しの詳細を含むカスタム Header オブジェクト。タイプ javax.sip.header.CallIdHeader を実装する必要があります。 |
maxForwardsHeader
|
最大プロキシー転送の詳細を含むカスタム Header オブジェクト。このヘッダーは viaHeaders に上限を設定します。タイプ javax.sip.header.MaxForwardsHeader を実装する必要があります。 |
eventHeader
|
イベントの詳細を含むカスタム Header オブジェクト。タイプ javax.sip.header.EventHeader を実装する必要があります。 |
contactHeader
|
詳細な連絡先情報が含まれるオプションのカスタム Header オブジェクト(メール、電話番号など)。タイプ javax.sip.header.ContactHeader を実装する必要があります。 |
expiresHeader
|
メッセージの有効期限情報が含まれるカスタム Header オブジェクト。タイプ javax.sip.header.ExpiresHeader を実装する必要があります。 |
extensionHeader
|
ユーザー/アプリケーション固有の詳細を含むカスタム Header オブジェクト。タイプ javax.sip.header.ExtensionHeader を実装する必要があります。 |
SIP エンドポイントとの間でメッセージを送信 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel SIP パブリッシャーの作成 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、SIP Publisher が作成され、SIP イベントパブリケーションをユーザー agent@localhost:5152 に送信します。これは、SIP Publisher と Subscriber 間のブローカーとして機能する SIP Presence Agent のアドレスです。
- client という名前の SIP スタックの使用
- evtHdrName というレジストリーベースの eventHeader の使用
- evtId というレジストリーベースの eventId の使用
- リスナーが user2@localhost:3534 として設定された SIP スタックから
- 公開されるイベントは EVENT_A です。
- REQUEST_METHOD と呼ばれる必須ヘッダーは Request.Publish に設定され、エンドポイントを Event パブリッシャーとして設定します。
Camel SIP Subscriber の作成 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、ユーザー johndoe@localhost:5154 に送信された SIP イベントパブリケーションを受信するために SIP Subscriber が作成されます。
- Subscriber という名前の SIP スタックの使用
- agent@localhost:5152 という Presence Agent ユーザーへの登録
- evtHdrName というレジストリーベースの eventHeader の使用。evtHdrName には、Event_A に属するイベントが含まれます。
- evtId というレジストリーベースの eventId の使用
Camel SIP コンポーネントは、テストおよびデモ目的にのみ使用される Presence Agent も含まれます。優先順位エージェントをインスタンス化する例は、上記を参照してください。
Presence Agent はユーザー agent@localhost:5152 として設定されており、Publisher と Subscriber の両方と通信できることに注意してください。Publisher や Subscriber とは異なる個別の SIP stackName があります。Camel コンシューマーとして設定されますが、実際にはルートとメッセージをエンドポイント "mock:neverland" に送信しません。