我希望我的两个 JVM 应用程序在同一台机器上相互通信。我考虑过使用 RMI,但后来我发现Chronicle Queue声称它非常快。我想知道是否可以使用 Chronicle 调用另一个 JVM 上的方法并等待返回值。有什么用例吗?
问问题
234 次
1 回答
1
这是可行的,但可能有点矫枉过正(特别是如果您不必保留请求/响应的历史记录)。想象一个有两个进程的简单场景:C(客户端)和 S(服务器)。创建两个IndexedChronicles
:
Q1
用于发送请求C
到S
Q2
用于发送S
响应C
服务器有一个正在轮询(忙于回退)的线程Q1
。当它接收到一个请求时(id=x
它会做任何需要的事情并写出响应Q2
(使用id=x
. C
pollsQ2
和一些策略并在响应出现时读出响应。它使用id
将响应与请求联系起来。
主要任务是设计一个线级协议,用于从客户端序列化您的命令(相当于方法调用)。这是特定于应用程序的,可以使用 Chronicle 工具有效地完成。
另一个需要考虑的问题:
- 客户应该如何处理启动时的历史响应?
- 一些心跳系统,以便客户端知道服务器还活着
- 归档旧队列(
VanillaChronicle
以一定成本使其更容易)
于 2016-04-06T10:41:52.820 回答