第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 に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-sip</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

Copy to Clipboard Toggle word wrap

URI 形式

sip エンドポイントの URI スキームは以下のとおりです。
sip://johndoe@localhost:99999[?options]
sips://johndoe@localhost:99999/[?options]

Copy to Clipboard Toggle word wrap
このコンポーネントは、TCP と UDP の両方のプロデューサーおよびコンシューマーエンドポイントをサポートします。
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

オプション

SIP コンポーネントは、SIP プロトコルを介して状態を伝播するために必要なカスタムステートフルヘッダーを作成するための幅広い設定オプションと機能を提供します。
Expand
名前 デフォルト値 説明
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 ファイルなどのレジストリーに登録できます。
渡すことができる値は次のとおりです。
Expand
名前 説明
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 パブリッシャーとして設定します。
producerTemplate.sendBodyAndHeader(  
    "sip://agent@localhost:5152?stackName=client&eventHeaderName=evtHdrName&eventId=evtid&fromUser=user2&fromHost=localhost&fromPort=3534",   
    "EVENT_A",  
    "REQUEST_METHOD",   
    Request.PUBLISH);  

Copy to Clipboard Toggle word wrap

Camel SIP Subscriber の作成

以下の例では、ユーザー johndoe@localhost:5154 に送信された SIP イベントパブリケーションを受信するために SIP Subscriber が作成されます。
  • Subscriber という名前の SIP スタックの使用
  • agent@localhost:5152 という Presence Agent ユーザーへの登録
  • evtHdrName というレジストリーベースの eventHeader の使用。evtHdrName には、Event_A に属するイベントが含まれます。
  • evtId というレジストリーベースの eventId の使用
@Override  
protected RouteBuilder createRouteBuilder() throws Exception {  
    return new RouteBuilder() {  
        @Override  
        public void configure() throws Exception {    
            // Create PresenceAgent  
            from("sip://agent@localhost:5152?stackName=PresenceAgent&presenceAgent=true&eventHeaderName=evtHdrName&eventId=evtid")  
                .to("mock:neverland");  
                  
            // Create Sip Consumer(Event Subscriber)  
            from("sip://johndoe@localhost:5154?stackName=Subscriber&toUser=agent&toHost=localhost&toPort=5152&eventHeaderName=evtHdrName&eventId=evtid")  
                .to("log:ReceivedEvent?level=DEBUG")  
                .to("mock:notification");  
                  
        }  
    };  
}  

Copy to Clipboard Toggle word wrap
Camel SIP コンポーネントは、テストおよびデモ目的にのみ使用される Presence Agent も含まれます。優先順位エージェントをインスタンス化する例は、上記を参照してください。
Presence Agent はユーザー agent@localhost:5152 として設定されており、Publisher と Subscriber の両方と通信できることに注意してください。Publisher や Subscriber とは異なる個別の SIP stackName があります。Camel コンシューマーとして設定されますが、実際にはルートとメッセージをエンドポイント "mock:neverland" に送信しません。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat