有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hystrix执行模式

我正试着对Hystrix了如指掌,在阅读了他们的文档之后,仍然对它的使用模式有疑问

首先,我不理解用例何时使用其异步执行与反应执行。我能看到的唯一区别是异步执行总是非阻塞的,而被动执行可以是阻塞的,也可以是非阻塞的。所以我想我真正的问题是:

  • 同步执行和阻塞反应执行之间有什么区别?;及
  • 异步和非阻塞反应式执行之间有什么区别

共 (1) 个答案

  1. # 1 楼答案

    假设您已经将两个服务调用A和B包装为HystrixCommand。您现在有三个选项:

    使用.execute():纯同步调用。调用该方法并在结果到达后继续程序。程序的总执行时间是两次调用的总和。你的程序的主要流程是非常线性的

    使用.queue():立即接收两个命令的Future。两个服务调用并行执行。然后使用.get()检索结果。这些调用将被阻塞,直到结果出现。您的总执行时间比以前快:您的执行时间将是最长服务调用的长度。当你想将两项服务的结果结合起来时,请使用此选项。程序的主要流程仍然是线性的,尽管两个调用都是并行执行的

    使用.subscribe():立即为这两个命令接收Observable。这两个服务调用都是并行执行的。然后使用.subscribe()注册回调,以便在结果可用时对其进行操作。如果您不想将结果合并在一起,并且希望在服务A和B的结果到达后独立地做出反应,那么这非常有用。 程序的主要流程不是线性的,而是被动的:程序流程将在每个命令的回调中继续

    我希望有帮助