Java 历史记录队列可以像RMI一样使用吗?
我希望我的两个JVM应用程序在同一台机器上相互通信。我曾考虑过使用RMI,但后来我发现它的速度非常快。我想知道是否可以使用历史记录在另一个JVM上调用一个方法并等待返回值。是否有这样的使用案例?这是可行的,但可能是一种过激行为(特别是如果您不必保留请求/响应的历史记录)。想象一个有两个进程的简单场景:C(客户端)和S(服务器)。创建两个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上轮询(带后退的忙自旋)。当它收到一个请求
indexedchronicle
:
用于将请求从Q1
发送到C
S
用于将响应从Q2
发送到S
C
Q1
上轮询(带后退的忙自旋)。当它收到一个请求时(使用id=x
它做任何需要的事情,并写出对Q2
(使用id=x
C
用一些策略轮询Q2
,并在响应出现时读出它们。它使用id
将响应与请求联系起来
主要任务是设计一个有线级别的协议,用于从客户端序列化命令(相当于方法调用)。这是特定于应用程序的,可以通过编年史工具高效地完成
需要考虑的其他问题:
- 启动时,客户端应如何处理历史响应
- 一些心跳系统,以便客户端知道服务器处于活动状态
- 旧队列的归档(
以一定的成本使其更容易实现)VanillaChronicle