私はこのように2つのクラスA
&を持っていますB
:
class A {
public Integer fetchMax() {
// Make a network call & return result
}
}
class B {
public Double fetchPercentile(Integer input) {
// Make a network call & return result
}
}
次にretry
、両方のメソッドfetchMax()
&のメカニズムを提供する必要がありますfetchPercentile(Integer)
。helper
クラスを使用してこの動作を提供したいのですretry
がinstance
、(AまたはB)、method-name
およびmethod-arguments
。再試行は基本的に、オブジェクトの提供されたメソッドで再試行します。
このようなもの:
class Retry {
public static R retry(T obj, Function<T, R> method, Object... arguments) {
// Retry logic
while(/* retry condition */)
{
obj.method(arguments);
}
}
}
Callable
引数として取るだけです:
public static <R> R retry(Callable<R> action) {
// Retry logic
while(/* retry condition */) {
action.call();
}
}
そしてそれをこのように呼びます:
Retry.retry(() -> a.fetchMax());
Retry.retry(() -> b.fetchPercentile(200));
GoogleのGuavaライブラリの小さな拡張機能であるguava-retryingを使用するか、インスピレーションを得て、構成可能な再試行戦略を作成できるようにすることができます(免責事項:私は元の作成者です)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加