Hystrix - 如果一组连续的外部请求失败,则停止顶级请求

时间:2015-10-21 21:30:08

标签: hystrix

道歉如果标题不清楚,我就不能用如此短的句子解释我的问题。

我刚刚开始使用hystrix-javanica,我在有一个外部网络电话断路器的地方工作。

我还有另一种情况需要报道,但我不太确定最佳方法。

我有一个预订服务,每个客户端请求在内部进行5个连续的外部网络呼叫,每个后续的呼叫取决于之前的。 例如,如果所有客户端请求在最后的第5次外部网络呼叫中失败,我希望能够断开电路(在某处)并停止任何命令击中5个外部网络呼叫中的任何一个,基本上关闭预订服务一段时间。

您如何看待这项实施?

感谢。

1 个答案:

答案 0 :(得分:0)

以下是来自HystrixDemo的示例,可能有所帮助。

public void executeSimulatedUserRequestForOrderConfirmationAndCreditCardPayment() throws InterruptedException, ExecutionException {
    /* fetch user object with http cookies */
    UserAccount user = new GetUserAccountCommand(new HttpCookie("mockKey", "mockValueFromHttpRequest")).execute();

    /* fetch the payment information (asynchronously) for the user so the credit card payment can proceed */
    Future<PaymentInformation> paymentInformation = new GetPaymentInformationCommand(user).queue();

    /* fetch the order we're processing for the user */
    int orderIdFromRequestArgument = 13579;
    Order previouslySavedOrder = new GetOrderCommand(orderIdFromRequestArgument).execute();

    CreditCardCommand credit = new CreditCardCommand(previouslySavedOrder, paymentInformation.get(), new BigDecimal(123.45));
    credit.execute();
}

此方法有五个命令,其中一些命令相互依赖,但如果其中任何一个命令失败,则该方法将以异常退出。

我希望这会有所帮助。