問題タブ [aggregator]
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.
sorting - インフォマティカのアグリゲーターの出力は常にソートされますか?
Informatica のアグリゲーター コンポーネントの出力は、常に指定されたグループで並べ替えられますか? また、入力の並べ替えボックスがチェックされていない場合でも、コンポーネント自体がグループ化を行いますか? それとも保証はありませんか?
stream - 同じ相関キーを持つ連続する交換のみを集約する
私は Apache Camel を使用しており、1 行ずつ処理する必要がある入力用の大きなファイルを取得しています。コンテンツは既にソートされており、連続するすべての行を同じ相関キーで集約する必要があります。相関キーが変更された場合、前の集計を完了する必要があります。ファイルが終了すると、最後の集約も完了します。いくつかの制約があります: - 受信ファイルがかなり大きいため、ストリーミング方式で処理したいと考えています。・結果が同期エンドポイントに渡されるため、タイムアウト完了述語は使いたくない。そうしないと、データ ソースの消費速度を調整する背圧が失われ、交換がタイムアウト マップと AggregateProcessor の集約リポジトリに蓄積されます。
PreCompletionAwareAggregationStrategy は有望なソリューションのように見えますが、最後の集計は次のファイルが到着するまで完了しないことが判明しました。preComplete で CamelSplitComplete プロパティを使用すると、最後の集約は完了しますが、最後の着信交換はありません。代わりに、この最後の交換は、次に到着するファイルのコンテンツに追加されます。
そのため、現在、過度に醜くない解決策を見つけるのにかなり迷っています。
java - Spring Integration Aggregator が重複メッセージを生成する
次のように定義された春の統合フローを持つプロジェクトがあります。
これが行うことは、各メッセージを検証し、適切な宛先ヘッダーを割り当ててから、結果をグループに集約し、それをルーターに送信して正しいチャネルにディスパッチすることです
フローをチェックして、開始時に送信されるメッセージの数をログに記録するサービスがあり、2 つの宛先チャネルの後に、X サイズのバンドルが処理されたことをサービスに伝える 2 つのハンドルがあります。
以下は、取得したログのサンプルです
すべてのメッセージが処理された後にわかるように、別のバンドルが作成されたことを示す ExpireGroup ログの後に警告を記録します。
アグリゲーターの前にログを置いてみましたが、そこに重複したメッセージは表示されません。重複しないようにアグリゲーターを構成するのを手伝ってくれる人はいますか?
ps:ここで役立つ場合は、バンドルリリース戦略をインスタンス化する方法です
xml - Apache Camel : XML 解析バッチを作成する正しい方法は?
Camelバッチをコーディングしようとしています:
- 特定のディレクトリ内のすべてのファイルと各ファイルを処理します。
- XSD スキーマを使用して XML を検証する
- さまざまな部分をアンマーシャルしてデータを処理する
- 例外で停止しない
- 少なくとも 1 つのエラーが発生した場合は、最後に失敗したディレクトリに移動し、それ以外の場合は完了に移動します
私が遭遇する困難:
- ファイル コンポーネントを使用すると、完了/失敗したディレクトリにファイルを自動的に移動できますが、分割/アグリゲーターを使用するとすぐに、ファイルは常に完了に移動され、集計が完了するのを待つことさえありません。
- 例外の管理は直感的ではありません
- スプリットとアグリターは悪夢であり、ドキュメントには十分な「現実世界」の例がありません
- 複雑な構造での XML トークン化は、理解を超えた何かに私たちを導きます
もちろん、私はApache Camelを初めて使用するため、これらの問題に遭遇します:)
私がやろうとしていることのアイデア:
- ファイル コンポーネント (OK)
- XSD 検証 (OK、エラーの場合、ファイル コンポーネントの移動に失敗)
- XML を読み取るために多くの分割/マルチキャストを作成します。エラーが発生した場合、例外を無視し、ヘッダーをエラーのままにして続行します (実際には問題ありません。読み取ることはできますが、正しく集約することができません)。
- 集計します(実際には集計するものは何もありません。すべてのヘッダーを確認したいだけです)
- エラーの場合は、失敗したディレクトリに明示的に移動します
この例の簡略化された XML :
このような XML を使用してバッチをどのように構築しますか? さらに、何よりも先に「ライブラリ」を読む(そしてパイプラインを使用する)必要があるとしましょう。また、ヘッダー(ブール値)にエラーを保存するという考えは良いですか?
注: SO に関する多くの Camel の投稿に返信してくれた Claus Ibsen に感謝します。また、Apache Camel のドキュメントへの単純なリンクを提供するだけでなく、Apache Camel のドキュメント sux.
ありがとう
java - Apache Camel : BeanIO へのファイルと ID に基づく beanIO オブジェクトのマージ
従業員、住所、および連絡先ファイルを並行して読み取り、それを beanIO オブジェクトに変換し、beanIO オブジェクトをマージして完全な employeeDetails オブジェクトを生成するユースケースがあります。
emp ファイル:
従業員連絡先ファイル:
従業員住所ファイル:
Exchange の EmployeeDetailsBeanIODataFormat オブジェクトで期待される出力:
私は次のルートを持っています
各ファイルは beanio オブジェクトに変換されます
出力では、Bean オブジェクトが正しくログに記録されます。
ここで、オブジェクトをマージして EmployeeDetails オブジェクトを形成する必要があります。誰かがこれを行う方法を教えてもらえますか? 私は読んだことがありますが、アグリゲーターを使用してこの仕事を行うことができるようですが、アプローチについてはわかりません。
サンプルを使用したこれに関するアイデアは役に立ちます。提案は大歓迎です。最初に従業員 ID に基づいてファイルをマージし、そこからオブジェクトを作成することをお勧めしますか? この場合、マージされたファイルをディスクに書き込みたくありません。これは、IO がパフォーマンスを犠牲にするためです。
前もって感謝します。