2 つのサーバー (EC2 インスタンス) があります。1 つのサーバー (サーバー 1) には 3 つのバッチがあり、別のサーバー (サーバー 2) には 4 つのバッチがあります。ここで、サーバー 2 のバッチの 1 つは、サーバー 1 でバッチが正常に実行された後にのみ実行する必要があります。
更新しました
Promise<Void> r12 = null
new TryCatchFinally(){
// First server job sequencing
Promise<Void> r11 = client1.b1();
r12 = client1.b2(r11);
Promise<Void> r13 = client1.b3(r12);
Promise<Void> r14 = client1.b4(r13);
}
@Override
protected void doCatch(Throwable e) throws Throwable {
System.out.println("Failed to execute commands in server 1");
}
@Override
protected void doFinally() throws Throwable {
// cleanup
}
}
new TryCatchFinally(){
// Second server job sequencing
Promise<Void> r21 = client2.b1();
// Will execute only when both parameters are ready
Promise<Void> r22 = client2.b2(r21, r12);
Promise<Void> r23 = client2.b3(r22);
Promise<Void> r24 = client2.b4(r23);
}
@Override
protected void doCatch(Throwable e) throws Throwable {
System.out.println("Failed to execute commands in server 2");
}
@Override
protected void doFinally() throws Throwable {
// cleanup
}
}
どのサーバーのどのアクティビティでも、カスタム例外をスローできます。ただし、別のサーバーのアクティビティによって例外がスローされたために、サーバーでのアクティビティの実行をキャンセルしないでください。サーバー内のアクティビティは、それ自体のサーバー内のアクティビティの 1 つが例外をスローした場合にのみキャンセルする必要があります。(依存しているアクティビティが失敗するか例外をスローした場合、依存するアクティビティはサーバーに関係なく取り消される必要があります)。このために私がしたことは、それを 2 つの別々の try catch ブロックにラップすることです。
サーバー 1 とサーバー 2 の両方のアクティビティが例外をスローするか失敗した場合、ワークフローの実行を終了する方法は?