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

标签 java rmi chronicle chronicle-queue

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

最佳答案

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

  • Q1 用于从 CS 发送请求
  • 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/

相关文章:

java - 我的无效字符在哪里(ORA-00911)

java - 如何组织 RMI 客户端-服务器架构

java - 填充值大小变化较大的 ChronicleMap 时出现 IllegalArgumentException

performance - 编年史队列硬断电恢复

Java文件存储实现

java - 如何在 EJB 3.0 中声明预期异常?

java RMI + 源命中服务器来自互联网或来自内网

JAVA:分割字符串以获得 double 值

java - RMI 请求是在服务器端按进程或线程处理的吗?