問題タブ [apache-camel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-camel - Apache Camel ファイル コンポーネントを使用したカスタム プロセス戦略の実装
問題の背景
私は現在、古いディレクトリに表示されるファイルのグループを処理するラクダベースの ETL アプリケーションに取り組んでいます。ファイルは、ファイル名の先頭で決まるグループとしてまとめて処理する必要があります。ファイルは、完了ファイル (「.flag」) がディレクトリに書き込まれた後にのみ処理できます。キャメル ファイル コンポーネントに完了ファイル オプションがあることは知っていますが、それでは完了ファイルと同じ名前のファイルしか取得できません。アプリケーションは継続的に実行し、日付が変わると翌日のディレクトリのポーリングを開始する必要があります。
ディレクトリ構造の例:
これまでの試み
処理を開始する次のルート (難読化された名前) があります。
私の問題は、ファイル エンドポイントの設定方法に関するものです。私は現在、運が悪くてもエンドポイントをプログラムで構成しようとしています。これまでの camel での私の経験では、主に Spring DSL を使用しており、Java DSL は使用していません。
FileEndpoint オブジェクトをインスタンス化しようとするルートをたどりましたが、ルートが構築されるたびに、ファイル プロパティが null であるというエラーが表示されます。これは、エンドポイントではなく FileComponent を作成する必要があるためだと思います。uriを使用してディレクトリ名に動的な日付を指定できないため、uriを使用せずにエンドポイントを作成していません。
質問
この状況で GenericFileProcessingStrategy を実装するのは正しいことですか? もしそうなら、これの例はどこかにありますか?キャメル ファイルの単体テストを調べましたが、飛び出してきたものは何もありませんでした。
エンドポイントの構成で何が間違っていますか? この混乱を解消するための答えは、質問 3 に結びついているように感じます。
ポーリング時および日付変更時に日付付きフォルダーをローリングするようにファイル エンドポイントを構成できますか?
いつも助けてくれてありがとう。
activemq - Apache Camel inOutルート、jaxbとのアウトエクスチェンジマーシャリング/アンマーシャリング
このApacheCamelルートがあります。
....そしてこのようなBeanクラス
私たちはメッセージを入れて、このようなルートで返信を待とうとしています
順方向のルート上のオブジェクトは、見事にマーシャリング/アンマーシャリングされています。しかし、setBody呼び出しにより、java.io.NotSerializableExceptionが発生しています。帰りに同じjaxbマーシャリング/アンマーシャリングを使用するようにルートを構成する方法はありますか?私のCommandクラスには、シリアル化できないjaxbで生成されたクラスオブジェクトがいくつか含まれています。それらは前向きのマーシャル/アンマーシャルによってうまく処理され、それらが帰りにあることができれば素晴らしいでしょう。ラクダは比較的新しいので、これがこれを行うための最良の方法であるかどうかはわかりません。
本当にありがとう。
unit-testing - Spring 構成で Camel をテストする際の問題
で定義されたルートがあり、 http://camel.apache.org/mock.htmlCamelRoutes.xml
の下部に記載されているラッピング手法を使用してテストしたいと考えています。
じぶんのCamelRoutes.xml
だから私はCamelRoutesTest.xml
含むものを作成しました:
しかし、Spring xml をロードし、モック エンドポイントへのアクセスを提供するテストを作成する方法がわかりません。
私が使用する場合..
次に、モックエンドポイントを取得する方法がわかりません
私が使用する場合..
次に、ラクダのコンテキストをロードする方法がわかりません..
CamelTestSupport
Spring xml から AND ロード ルートを使用する Web サイトでサンプル テストを見つけることができないようです。
apache-camel - FUSE (servicemix) ESB のキャメル cxf ルートでの IllegalStateException
FUSE (Ver. 4.3.0) ESB/OSGi コンテナーにキャメル (Ver. 2.4.0) ルートを設定しようとしています。WebService 呼び出しを「プロキシ」アドレスから実際のサービスにルーティングするには、単純な cxf-proxy である必要があります。
私はいくつかのドキュメントを読みました:
次のスプリング構成を設定します。
FUSE でバンドルを開始しようとすると、この例外が発生します
何が悪いのかわかりません。エンドポイント アドレスが間違っているのではないかと疑っており、サーブレット アドレスがわかりません (cxf:cxfEndoint サーブレット アドレス属性がありません)。
この問題を解決するために私を正しい方向に導くための助けをいただければ幸いです。
ありがとうクラウス
java - 2.6 spring の設定方法: ルート route2 の作成に失敗しました:
Camel 2.0 から 2.6 にアップグレードしようとしています。
これは私のapplicationContext-camel.xmlファイルにあります...
真ん中の 2 行 (ポリシーとトランザクション) を追加すると、例外が発生します...
原因: org.apache.camel.FailedToCreateRouteException: ルート route2 の作成に失敗しました: >>> From[transactionSaleBuffer] <<< ルート内: Route[[From[transactionSaleBuffer]] -> [Transacted[ref:trans..ルート route2 には出力プロセッサがないためです。to("log:foo") などの出力をルートに追加する必要があります。
これは、Camel クラス RouteDefinition.java が ProcessorDefinitionHelper.hasOutputs(outputs, true) を呼び出すためであることがわかります。
これは、1 つのオブジェクトの配列を渡します ([Transacted[ref:transactionManagerETL]])
この 1 つのオブジェクトには 1 つの 2 つの子があります
Policy の子には出力がないため、例外がスローされます。
それでも、子を追加する方法がわかりません。上記の XML はスキーマと一致します。
多分私は何か他のものを見逃していますか?
私のセットアップは例と一致します... Apache Camel: Book in One Page (セクションを参照してください: Camel 1.x - JMS サンプル)
誰でも私を助けてください。ありがとう!ジェフ・ポーター
java - Apache Camel http から http へのルーティング (可能ですか?)
私は今キャメルから始めています。http クライアント用の http4 コンポーネントと http サーバー用の jetty コンポーネントを見てきました。
どちらか一方を使用する例をいくつか見てきました。組み合わせ可能かどうか知りたいです。
例
これにより、camel は単純な http ベースのルーター/プロキシになります。Web ブラウザーは camel URL にアクセスし、代わりに google を取得します。(Google は単なる例です。使用したい実際の POST ベースのサービスがあります)
このルートは可能ですか?Camel を調査する必要がありますか、それとも別のソフトウェア フレームワークが必要ですか? 将来的には、間に変換/フィルターを追加する必要もあります。
試してみたところ、nullpointer 例外が発生しました
spring - JMX オブジェクトはどのように SNMP OID にマップされますか?
SNMP 経由で監視したい Apache Camel で書かれたスタンドアロンの Java アプリケーションがあります。Camel は Spring の JMX (@ManagedAttribute、@ManagedResource など) を使用していると思います。JDK jconsole でさまざまな Camel 関連のオブジェクトを問題なく確認できます。SNMP を有効にしてアプリを実行すると、次のようになります。
SNMP ブラウザで接続でき、そこにもたくさんのものを見ることができます。ここまでは順調ですが、これを利用するには、JMX オブジェクトが SNMP OID にどのようにマップされているかを知るか、把握する必要があります。それがどのように行われているか、または少なくとも誰によって行われているかを知る方法はありますか - Spring、JVM? 何かご意見は?
junit - Apache Camelで本番ルートを単体テストするには?
別の RouteBuilder クラスでルートを作成したとしましょう。次のようになります。
- JMS キューからメッセージを取得する
- いくつかの変換、検証などを行います
- 検証結果に応じて、特定の JMS キューに転送され、DB に何かが保存されます
JMS ブローカーと DB を使用せずに、このルートを単体テストしたいと思います。Processor の実装をモックできることはわかっていますが、それだけでは十分ではありません。このルートを変更したくありません (jar ファイルでそのクラスを取得したとしましょう)。Camel in Action (セクション 6.2.6) から知る限り、エンドポイントのモックやその他のものを使用できるようにするには、ルート エンドポイントの定義を変更する必要があります (本の例では、これは "mina:tcp:/ /miranda」から「mock:miranda」など)。
ルート定義を変更せずにフローを完全に分離してテストすることは可能ですか? RouteBuilder を別のクラスとして取得した場合、何らかの方法でルート定義を「コピー」して手動で変更する必要がありますか? 間違ったことをテストしていませんか?
私は Camel にまったく慣れていないので、ルートの開発中に単体テストを分離できるのは本当にクールだと思います。何かを変更したり、小さなテストを実行したり、結果を観察したりできるようにするためだけに。
spring - WebコンテナでのRESTサービスとしてのCamelルートの公開
RESTWebサービスとして公開したいCamelルートがあります。アプリケーションはWebコンテナ(Jetty / Tomcat)にデプロイされ、SpringはDIやその他の「インフラストラクチャ」にも使用されます。
camel-restlet
とコンポーネントの両方を調べましたが、どちらもcamel-cxfrs
ルートをRESTサービスとして公開するためのサポートを提供していますが、別々のサーバーの起動を回避する方法を見つけることができませんでした。私が本当に探しているのは、Spring-WSインバウンドエンドポイントのルートを定義する方法と同様の方法でCamelルートを定義する機能です。
Webアプリケーションの構成では、要求を受け入れて適切なエンドポイントに転送する必要があります。
トピックに関する十分な情報を見つけることができず、私の要件が非常にエキゾチックであるとは思わないことに、私はかなり驚いたことを認めなければなりません。
java - Apache Camel は ftp から段階的かつ定期的にデータをプルします
私はApacheキャメルに非常に慣れていないため、たとえば15分ごとにftpからデータをプルし、新しいファイルまたは更新されたファイルのみをプルするルートを作成する方法を模索しています。それらを宛先フォルダーにロードしないでください。
アドバイスをいただければ幸いです。
更新 #1
FTP2 を確認する必要があることに既に気付きました。実際、私はすでに進歩を遂げています。最後に明確にしたいことは、consumer.delay が各ダウンロード試行間の遅延を定義することです。たとえば、consumer.delay = 5s です。最初の試行でftpには5つのファイルが含まれ、コンシューマーはデータをどこかにプルし、2回目の試行で5秒間待機しますftpはまだ同じで、camelは何もしません。その後、ftpに追加の5つのファイルが到着し、5秒後にftpコンシューマーのダウンロードが到着しましたnew files または consumer.delay は、ファイルの各ダウンロード間で消費者を待機させるだけです (file#1 -> 5s -> file#2 -> 5s -> など...)
最初のシナリオを達成したい。
また、いくつかのファイルが宛先フォルダーにダウンロードされると、つまり ftp からローカル ファイル システムにダウンロードされると、このファイルがローカル ファイル システムで削除されたとしても、その後のデータ ロードではこのファイルが無視されることがわかりました。キャメルに削除されたファイルを再度ダウンロードするには、既にロードされたファイルに関する情報をどのように保存しますか? そして、最初のデータプルでファイルがダウンロードされるたびに、すべてのファイルをダウンロードするようです。既にダウンロードされたファイルを除外するフィルターを作成する必要がありますか?