Chronicle Queue 可以像 RMI 一样使用吗?

Can Chronicle Queue be used like RMI?

我希望我的两个 JVM 应用程序在同一台机器上相互通信。我考虑过使用 RMI,但后来我发现 Chronicle Queue 声称它非常快。我想知道我是否可以使用 Chronicle 调用另一个 JVM 上的方法并等待 return 值。有任何用例吗?

这是可行的,但可能有点矫枉过正(特别是如果您不必保留 request/responses 的历史记录)。想象一个有两个进程的简单场景:C(客户端)和 S(服务器)。创建两个 IndexedChronicles:

  • Q1 用于将请求从 C 发送到 S
  • Q2 用于将响应从 S 发送到 C

服务器有一个线程正在 Q1 上进行轮询(忙于回退)。当它收到一个请求时(使用 id=x 它会做任何需要的事情并写出对 Q2 的响应(使用 id=xC 轮询 Q2 一些策略和读出出现的响应。它使用 id 将响应与请求联系起来。

主要任务是设计一个线路级协议,用于序列化来自客户端的命令(相当于方法调用)。这是特定于应用程序的,可以使用 Chronicle 工具高效完成。

需要考虑的其他问题:

  • 客户端应该如何处理启动时的历史响应?
  • 一些心跳系统让客户端知道服务器是活的
  • 旧队列的存档(VanillaChronicle 以一定的成本使其更容易)