通过 rabbitmq 或其他任务队列传递 vijava ServiceInstance

Pass vijava ServiceInstance via rabbitmq or another task queue

我正在尝试创建一个系统,在该系统中,主机将创建到 vcenter 的连接并将服务实例对象传递给一组性能收集器,然后它们可以完成工作并退出。我的问题是共享 SI 对象的最佳方法是什么?我正在考虑为此目的使用消息队列,但我并不真正热衷于序列化对象。还有其他更有效的方法吗?

该 SI 只会在创建该 SI 的 vCenter 上运行。如果这对您来说不是问题,那么只需将会话 ID 放在总线上供您的工作人员接收,然后他们应该能够使用会话 ID 创建一个新的 SI。

第一次连接:

ServiceInstance serviceInstance = new ServiceInstance(new URL("https://vcenter/sdk"),user, passwd, true);
String sessionId = serviceInstance.getServerConnection().getSessionStr();

接下来将那个 sessionId 放到总线上。让你的工人拿起它并做:

ServiceInstance si2 = new ServiceInstance(new URL("https://vcenter/sdk"), sessionId, true);

该会话的默认超时时间为 30 分钟 IIRC..

还有一点自我堵塞我建议从 vijava 转移到 yavijava。它是我维护的一个分支,它添加了许多漂亮的功能,我什至目前正在添加 6.0 支持。 https://github.com/yavijava/yavijava