0

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 の両方のアクティビティが例外をスローするか失敗した場合、ワークフローの実行を終了する方法は?

4

1 に答える 1