37.3. コンシューマーテンプレートの使用
概要 リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーテンプレートは、受信メッセージを受信するためにコンシューマーエンドポイントをポーリングする方法を提供します。受信メッセージをエクスチェンジオブジェクトの形式またはメッセージボディーの形式で受信するかを選択できます (メッセージボディーは組み込み型コンバーターを使用して特定の型にキャストできます)。
エクスチェンジのポーリングの例 リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーテンプレートを使用し、ブロッキングの receive()、タイムアウトのある receive()、もしくは即座に返される receiveNoWait() ポーリングメソッドのいずれかを使用して、エクスチェンジのコンシューマーエンドポイントをポーリングできます。コンシューマーエンドポイントはサービスを表すため、エクスチェンジのポーリングを試みる前に、start() 呼び出しを行ってサービススレッドを開始する必要があります。
以下の例は、ブロッキング receive() メソッドを使用して seda:foo コンシューマーエンドポイントからエクスチェンジをポーリングする方法を示しています。
コンシューマーテンプレートインスタンス consumer は、CamelContext.createConsumerTemplate() メソッドを使用してインスタンス化され、コンシューマーサービススレッドは ConsumerTemplate.start() 呼び出しによって開始されます。
メッセージボディーをポーリングする例 リンクのコピーリンクがクリップボードにコピーされました!
また、ブロッキング receiveBody()、タイムアウトのある receiveBody()、または即座に返される receiveBodyNoWait() メソッドのいずれかを使用して、受信メッセージボディーのコンシューマーエンドポイントをポーリングすることもできます。上記の例のように、エクスチェンジをポーリングする前に start() を呼び出してサービススレッドを起動する必要もあります。
以下の例は、ブロッキング receiveBody() メソッドを使用して seda:foo コンシューマーエンドポイントから受信メッセージボディーをポーリングする方法を示しています。
エクスチェンジをポーリングする方法 リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーエンドポイントから エクスチェンジ をポーリングするための基本的な方法には、タイムアウトブロックが無期限にない receive()、指定されたミリ秒の期間にタイムアウトブロックが設定された receive()、およびブロックされない receiveNoWait() の 3 つがあります。エンドポイント URI または Endpoint インスタンスとして、コンシューマーエンドポイントを指定できます。
メッセージボディーのポーリング方法 リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーエンドポイントから メッセージボディ をポーリングするための基本的な方法には、タイムアウトブロックが無期限にない receiveBody()、指定されたミリ秒の期間にタイムアウトブロックが設定された receiveBody()、およびブロックされない receiveBodyNoWait() の 3 つがあります。エンドポイント URI または Endpoint インスタンスとして、コンシューマーエンドポイントを指定できます。さらに、これらのメソッドのテンプレート形式を呼び出すことで、組み込み型コンバーターを使用して、返されるボディーを特定のタイプ T に変換できます。