問題タブ [spring-retry]
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 - Spring Retry の @Retryable アノテーションが起動しない
デッドロックを引き起こすテーブルの更新があり、メソッドが何らかのロック例外を取得したときに Spring Retry を再試行しようとしています。maxAttempts、値、およびバックオフを取り出してみましたが、例外をキャッチしていないようです。何か不足していますか?アプリケーション ファイルで Bean を宣言する必要がありますか? どんな助けでも大歓迎です!
アプリケーション.Java
詳細サービス
編集
上記の DetailService を書き直して、詳細を提供し、不足しているメソッドを追加しました
spring - Spring Batch - 読み取るファイルがありません
ファイルを読み取ってデータベースに書き込む最初のステップを持つSpringバッチジョブがあります。ファイルが存在しない場合、システムに x 分間待機させてから、y 回までステップを再試行させます。これどうやってするの?
詳細
は次のItemReader
とおりです。
現在、file
が存在しない場合、次の例外がスローされ、ジョブは失敗します。
com.myorg.LoadApplication コードはバッチ アプリケーションを開始します。
アップデート
dimitrisliの回答を読んだ後、@Configuration
クラスでこれを試しました(注:@EnableRetry
構成クラスにも追加しました):
ItemStreamException
がスローされ、アプリケーションは再試行せずに終了します。再試行するにはどうすればよいですか?
java - @Retryable が Spring-boot-gradle-plugin で機能しない
を追加して、(Spring Boot gradle プラグイン) アプリケーションに再試行ロジックを追加しようとしています@Retryable
。
私がこれまでに行ったこと:
クラスパスに最新のスターター aop を追加しました:
クラスを再試行:
テストロジック:
しかし、再試行ロジックが機能していません。誰か提案はありますか?
spring-integration - Spring Integration with Java config を使用して SFTP 経由でファイルを毎日取得する方法は?
SFTP 経由で毎日ファイルを取得する必要があります。Java config で Spring Integration を使用したいと思います。ファイルは通常、毎日特定の時間に利用可能です。アプリケーションは、毎日その時刻近くにファイルを取得しようとする必要があります。ファイルが利用できない場合は、x回試行し続ける必要があります。x回試行した後、ファイルがまだSFTPサイトで利用できないことを管理者に知らせるメールを送信する必要があります。
1 つのオプションは、 を使用することSftpInboundFileSynchronizingMessageSource
です。でMessageHandler
、ファイルを処理するジョブを開始できます。ただし、リモート ファイル システムとの同期は本当に必要ありません。所詮、ファイルの定期配信です。さらに、次の再試行まで最大 15 分遅らせる必要があり、15 分ごとにポーリングするのは、毎日のファイルには少しやり過ぎに思えます。これを使用できると思いますが、一定の時間が経過してファイルが受信されなかった後に電子メールを送信するためのメカニズムが必要になります。
もう 1 つのオプションget
は、SFTP アウトバウンド ゲートウェイを使用しているようです。しかし、私が見つけることができる唯一の例は、XML 構成のようです。
アップデート
以下の Artem Bilan の回答で提供されるヘルプを使用した後にコードを追加します。
構成クラス:
RetryCompoundTriggerAdvice クラス:
spring - メソッドに @Retryable アノテーションを持つ Mocked Spring @Service が UnfinishedVerificationException で失敗する
私はSpring Boot1.4.0.RELEASE
を使用していますspring-boot-starter-batch
.spring-boot-starter-aop
spring-retry
@Service
実行時にモックされる Spring Integration テストがあります。@Service
クラスの@Retryable
メソッドに注釈が含まれている場合、 と干渉しているように見えることに気付きましMockito.verify()
たUnfinishedVerificationException
。これは何か関係があるに違いないと思いspring-aop
ますか?@Retryable
のすべての注釈をコメントアウトすると、正常に@Service
動作することを確認できます。
この問題を示すgithub プロジェクトを作成しました。
で失敗sample.batch.MockBatchTestWithRetryVerificationFailures.batchTest()
するvalidateMockitoUsage();
次のようなもので:
ただし、注釈を持たないsample.batch.MockBatchTestWithNoRetryWorking.batchTest()
モック付きの別のクラス ( ) があり、正常に動作することを確認します。@Service
@Retryable
私は何を間違っていますか?
私の pom.xml には次のものがあります。
次に、関連するすべての Java クラス
編集:問題を示すためにまとめたサンプルプロジェクトに基づいて、質問とコードを更新しました。