問題タブ [pcfdev]
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.
java - PCF では NoClassDefFoundError ですが、CloudOps VM およびローカルでは機能します
Consumer Driven Contract 実装の一環として、プロジェクトで PACT 依存関係を使用して JSON を PACT ファイルに変換しています。
これらの PACT 依存関係はダウンロードされ、maven clean install コマンドを使用して jar にバンドルされます。そして、CloudOps VM とローカル サーバーで jar を実行すると、正常に動作し、API に対して成功の応答が返されます。同じ jar が PCF に正常にデプロイされ、API を実行しようとすると、PACT 依存関係クラスの 1 つ - au.com.dius.pact.model.RequestResponsePact に対してNoClassDefFoundErrorが返されます。
以下は、PCF ログからの完全なエラーです -
2020、レベル: ERROR、スレッド: http-nio-8080-exec-8、loggerName: com.test.sample.common.aop.logging.LoggingAspect、
メッセージ: com.test.sample.cdcc.v1.process.CdccUploadProcessV1.cdcUploadedFiles() で例外が原因 = 'NULL' および例外 = 'クラス au.com.dius.pact.model.RequestResponsePact を初期化できませんでした',
エラー: java.lang.NoClassDefFoundError : クラス au.com.dius.pact.model.RequestResponsePact を初期化できませんでした2020-05-04T15 :28:28.332+05:30 [APP/PROC/WEB/0] [OUT]
au.com.dius.pact.consumer.dsl.PactDslResponse.toPact(PactDslResponse.java:265) 2020-05-04T15:28:28.332+05:30 [APP/PROC/WEB/0] [送信]
com.test.sample.cdcc.util.JsonToPactUtil.convertJSONtoPACT (JsonToPactUtil.java:47) で
以下は、私たちが試したいくつかの変更です -
これらの依存関係を下位バージョンに切り替える
Mavenアセンブリプラグインを追加して、すべての依存関係を持つファットジャーを作成しようとしました
依存関係のスコープを提供およびコンパイルに変更する
Maven jar プラグインにクラスパスを追加する
しかし、これらすべてがこの問題の解決に役立ったわけではありません。この問題を解決するための正しい方向を教えていただけますか?
以下は、jarを作成しようとしたいくつかの方法です
オプション1:
オプション 2:
rabbitmq - キュー内の PCF RabbitMQ 未確認メッセージ
PCF を使用して spring-boot アプリケーションを実行しています。また、PCF RabbitMQ サービスを使用しました。
私の問題は、キュー内のメッセージが確認応答なしで長時間固定されていたことがあり、PCF で実行中のアプリ インスタンスの数が RabbitMQ のアクティブなコンシューマー チャネルの数よりも少ないことに気付きました。
また、適用されたルールに応じてアプリ インスタンスを自動的にスケールアップ/スケールダウンするオートスケーラーも有効にしています。
クライアント アプリにエラー ログがなく、唯一の解決策は PCF でアプリケーションを再起動することだったので、問題を再現できませんでした。また、アプリケーションを強制終了しようとしましたが、コンシューマ チャネルも破壊されているようです。
私が調べることができる助けや提案はありますか?コンシューマーアプリにSpring Cloud Streamを使用し、ymlファイルで非常に基本的な構成を使用しました(dlqなし、カスタムタイムアウトなしなど)
前もって感謝します!