我希望我的两个 JVM 应用程序在同一台计算机上相互通信。我考虑过使用RMI,但后来我发现Chronicle Queue它声称它非常快。我想知道是否可以使用 Chronicle 调用另一个 JVM 上的方法并等待返回值。有任何用例吗?
最佳答案
这是可行的,但可能有点矫枉过正(特别是如果您不必保留请求/响应的历史记录)。想象一个有两个进程的简单场景:C(客户端)和 S(服务器)。创建两个 IndexedChronicles
:
Q1
用于从C
向S
发送请求Q2
用于将响应从S
发送到C
服务器有一个线程正在 Q1
上进行轮询(忙旋转并后退)。当它收到请求(使用 id=x
)时,它会执行所需的操作并将响应写入 Q2
(使用 id=x
)。C
使用某些策略轮询 Q2
并读出出现的响应。它使用 id
将响应与请求联系起来。
主要任务是设计一个线路级协议(protocol),用于序列化来自客户端的命令(相当于方法调用)。这是特定于应用程序的,可以使用 Chronicle 工具有效地完成。
需要考虑的另一个问题:
- 客户应该如何处理启动时的历史响应?
- 一些心跳系统,以便客户端知道服务器处于 Activity 状态
- 旧队列的归档(
VanillaChronicle
使其更容易,但需要付出一些代价)
关于java - Chronicle Queue 可以像 RMI 一样使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35772920/