我有一个用例,其中协调器是由应用程序选择的(使用自定义MembershipPolicy并选择一个配置为主节点的节点),主节点的丢失应该不会花这么长时间才能由进行RPC的客户端节点意识到(假设操作的成功/失败取决于主节点的存在/不存在)。如果没有callRemoteMethods(),我可以在RequestOptions中指定一个可接受的超时,但如果队列中有100个请求,这将增加RTT。因此,我使用callRemoteMethodsWithFuture()来避免几个RPC之间的网络传输时间。然而,问题是,对于堆栈中的SEQUENCER,callRemoteMethodsWithFuture()会被阻塞,直到消息被转发到协调器。在这种情况下,协调器丢失会使调用阻塞,直到视图发生更改。这是我希望在我的应用程序中避免的事情(因为协调器丢失等同于主丢失,并且主丢失必须由调用者更早地识别)。移除SEQUENCER不是一个选项。我该如何继续?
发布于 2018-04-02 15:40:14
简而言之:这是API的预期行为。我已经在Jgroups groups上与JGroups的作者进一步讨论了这个问题
https://stackoverflow.com/questions/45484686
复制相似问题