我有两台服务器(EC2 实例)。在一台服务器(服务器 1)上,我有 3 个批次,而在另一台服务器(服务器 2)上,我有 4 个批次。现在,服务器 2 中的一个批处理只需要在服务器 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
}
}
任何服务器中的任何活动都可以引发任何自定义异常。但是服务器中任何活动的执行不应该因为另一个服务器中的活动抛出异常而被取消。仅当它自己的服务器中的某个活动引发任何异常时,才应取消服务器中的活动。(如果依赖的活动失败或抛出任何异常,则无论服务器如何,依赖的活动也应该被取消)。为此,我所做的是将它包装到两个单独的 try catch 块中。
如果服务器 1 和服务器 2 的活动都抛出任何异常或失败,如何终止工作流执行?