Java 历史记录队列可以像RMI一样使用吗?

Java 历史记录队列可以像RMI一样使用吗?,java,rmi,chronicle,chronicle-queue,Java,Rmi,Chronicle,Chronicle Queue,我希望我的两个JVM应用程序在同一台机器上相互通信。我曾考虑过使用RMI,但后来我发现它的速度非常快。我想知道是否可以使用历史记录在另一个JVM上调用一个方法并等待返回值。是否有这样的使用案例?这是可行的,但可能是一种过激行为(特别是如果您不必保留请求/响应的历史记录)。想象一个有两个进程的简单场景:C(客户端)和S(服务器)。创建两个indexedchronicle: Q1用于将请求从C发送到S Q2用于将响应从S发送到C 服务器有一个线程正在Q1上轮询(带后退的忙自旋)。当它收到一个请求

我希望我的两个JVM应用程序在同一台机器上相互通信。我曾考虑过使用RMI,但后来我发现它的速度非常快。我想知道是否可以使用历史记录在另一个JVM上调用一个方法并等待返回值。是否有这样的使用案例?

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

  • Q1
    用于将请求从
    C
    发送到
    S
  • Q2
    用于将响应从
    S
    发送到
    C
服务器有一个线程正在
Q1
上轮询(带后退的忙自旋)。当它收到一个请求时(使用
id=x
它做任何需要的事情,并写出对
Q2
(使用
id=x
C
用一些策略轮询
Q2
,并在响应出现时读出它们。它使用
id
将响应与请求联系起来

主要任务是设计一个有线级别的协议,用于从客户端序列化命令(相当于方法调用)。这是特定于应用程序的,可以通过编年史工具高效地完成

需要考虑的其他问题:

  • 启动时,客户端应如何处理历史响应
  • 一些心跳系统,以便客户端知道服务器处于活动状态
  • 旧队列的归档(
    VanillaChronicle
    以一定的成本使其更容易实现)

我看不出任何基于磁盘的系统怎么会比非基于磁盘的系统快,也看不出你为什么会这么想。它使用共享内存。磁盘只用于最终的持久性。只要你有大量的RAM,并且有一段较低的活动时间允许将脏页刷新到磁盘上,它就会非常快。我同意你的看法,这是一个o维基尔。我决定使用RMI。它使我免于你提到的许多麻烦。