Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
EventBus 事件是否跨 RMI 连接工作?
基本思想:我有一个 RMI 服务器和任意数量的客户端。服务器持有 EventBus 对象并通过getEventBus()方法发布。
getEventBus()
期望的结果:当客户端在服务器的 EventBus 上发布某些内容时,会通知其他注册的客户端。
有没有人做过这样的事情或知道为什么它不起作用?如果这样做有什么陷阱吗?
EventBus 发布的消息仅在您的 JVM 中可用。由于您使用 RMI,我猜您的服务器/客户端将在他们自己的环境中运行,所以这是不可能的(尽管我听说 ppl 试图实现远程 EventBus,但我不知道这是否成功)。通常 EventBus 用于同一应用程序中的 UI 特定通信。
只要您想在不同的 JVM 之间进行通信,Java 消息服务(JMS) 之类的东西就可以派上用场,将事件从服务器广播到感兴趣的客户端。JMS 的一个著名实现是ActiveMQ。
我刚刚尝试过这个并且它有效。需要对接口进行注解,实例化后,注册代理对象。
当一个事件进来时,似乎 EventBus 只是简单地调用了代理上的函数,并且通过 RMI 正确地调用了远程对象。