1

EventBus 事件是否跨 RMI 连接工作?

基本思想:我有一个 RMI 服务器和任意数量的客户端。服务器持有 EventBus 对象并通过getEventBus()方法发布。

期望的结果:当客户端在服务器的 EventBus 上发布某些内容时,会通知其他注册的客户端。

有没有人做过这样的事情或知道为什么它不起作用?如果这样做有什么陷阱吗?

4

2 回答 2

2

EventBus 发布的消息仅在您的 JVM 中可用。由于您使用 RMI,我猜您的服务器/客户端将在他们自己的环境中运行,所以这是不可能的(尽管我听说 ppl 试图实现远程 EventBus,但我不知道这是否成功)。通常 EventBus 用于同一应用程序中的 UI 特定通信。

只要您想在不同的 JVM 之间进行通信,Java 消息服务(JMS) 之类的东西就可以派上用场,将事件从服务器广播到感兴趣的客户端。JMS 的一个著名实现是ActiveMQ

于 2012-09-19T14:33:04.080 回答
1

我刚刚尝试过这个并且它有效。需要对接口进行注解,实例化后,注册代理对象。

当一个事件进来时,似乎 EventBus 只是简单地调用了代理上的函数,并且通过 RMI 正确地调用了远程对象。

于 2017-12-14T17:10:59.343 回答