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
インスタンスとして、コンシューマーエンドポイントを指定できます。
メッセージボディーのポーリング方法 リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーエンドポイントから メッセージボディ をポーリングするための基本的な方法には、タイムアウトブロックが無期限にない receive()
、指定されたミリ秒の期間にタイムアウトブロックが設定された receive()
、およびブロックされない receiveNoWait()
の 3 つがあります。エンドポイント URI または Endpoint
インスタンスとして、コンシューマーエンドポイントを指定できます。さらに、これらのメソッドのテンプレート形式を呼び出すことで、組み込み型コンバーターを使用して、返されるボディーを特定のタイプ T
に変換できます。
M