订阅RMI主机上的EventBus

时间:2012-09-19 14:05:46

标签: java rmi guava

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

只要您想在不同的JVM之间进行通信,就可以使用Java Messaging Services(JMS)等方式将事件从服务器广播到感兴趣的客户端。 JMS的一个着名实现是ActiveMQ

答案 1 :(得分:1)

我刚试过这个并且它有效。您需要注释接口,并在实例化后,注册代理对象。

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