我有平台和B平台,我想打电话平台上的RPC方法从平台B.注意我读过这个问题已经: In VOLTTRON, how to use VIP to get agents talk across remote platform instances? 我喜欢这种感觉可能已过时,因为它没有提及已知的hosts文件和新volttron-CTL任何身份验证添加接口。同时我还必须包括与serverkey的评论提到,大量的网址,秘密密钥参数?我也看了SimpleForwarder代码: https://github.com/VOLTTRON/volttron/blob/5cc71e9982338e242bf801da372aa66ed14abbd9/examples/SimpleForwarder/simpleforwarder/simpleforwarder.py 在这个例子中,VIP连接的网址是: “目的地VIP”:“IPC://@/tmp/v4home/run/vip.socket”, 但这与堆栈溢出问题中提供的答案不匹配。 http://volttron.readthedocs.io/en/4.1/core_services/messagebus/VIP/VIP-Authentication.html 本节的文档中提供了有关如何通过VIP认证,但需要什么样的步骤,这调用代理的RPC其他平台上的一些信息?有人能澄清什么是更新的方式做到这一点(为4.1 volttron),希望一步一步?在远程平台调用的方法@RPC
0
A
回答
2
调用上的远程代理的RPC调用非常相似,在其他平台上进行发布/订阅。对于工作的例子,你可以咨询DataMover剂调用远程历史学家的RPC方法。
首先,它得到serverkey为目标,如果它在已知的hosts文件:
hosts = KnownHostsStore()
serverkey = hosts.serverkey(destination_vip)
如果不是,它会从代理配置文件中得到它。
然后,它的historian_setup方法使用vip agent utils中的building_agent方法,通过传递地址,serverkey,public和secret密钥来创建到另一个平台的链接,因此您不必构造URL。
self._target_platform = build_agent(address=self.destination_vip,
serverkey=self.destination_serverkey,
publickey=self.core.publickey,
secretkey=self.core.secretkey,
enable_store=False)
然后当它一发布呼吁:
self._target_platform.vip.rpc.call(
self.destination_historian_identity, 'insert',
to_send).get(timeout=10)
步骤执行这一过程是:
- 开始PlatformA与TargetAgent运行。
- 检索serverkey为PlatformA与:
vctl auth serverkey
- 开始PlatformB
添加PlatformA已知上PlatformB主机:
vctl add-known-host --host tcp://tcp://xxx.xxx.xxx.xxx:YYYY --serverkey SERVERKEY_FOR_A
或 配置SendingAgent与serverkey PlatformB从步骤2,目的地VIP地址PlatformA(TCP:/ /xxx.xxx.xxx.xxx:YYYY)上PlatformB
安装SendingAgent- 检索要SendingAgent用公钥:
vctl auth publickey
- 添加SendingAgent的凭据PlatformA有:
vctl auth add
SendingAgent现在应该能够呼吁TargetAgent RPC方法
相关问题
- 1. 解释RPC(远程过程调用)和RMI(远程方法调用)
- 2. C++远程方法调用
- 3. 如何调用使用JSON-RPC远程方法,并得到Android的
- 4. 用于.NET服务的跨平台RPC
- 5. 在Volttron之外调用@RPC方法
- 6. 无法远程调用方法
- 7. 使用ajax平台的Web方法调用错误...无法连接到远程服务器?
- 8. 在Struts2中使用JSON RPC时永远不会调用Java方法
- 9. 使用JavaScript进行RPC(远程过程调用)
- 10. GWT RPC。当onSuccess()方法调用?
- 11. 方法来调用远程脚本
- 12. 当调用远程方法时出错
- 13. 如何远程调用方法?
- 14. 如何调用远程java类(方法)
- 15. 如何调用远程方法服务?
- 16. 保护远程ajax方法调用
- 17. Powershell - 调用远程WMI对象 - RPC错误HRESULT:0x800706BA(RPC服务器不可用)
- 18. 如何在任何异步RPC调用时调用GWT方法
- 19. 在远程winforms应用程序中调用方法?
- 20. 调用Pyro4远程对象的方法永远卡住。
- 21. 正在使用的远程方法调用端口
- 22. 在后台调用代理的方法
- 23. 在后台线程上不会调用FSCopyObjectAsync回调方法
- 24. 如何在应用程序iphone的后台调用方法?
- 25. 在前台线程的调用方法中捕获子后台线程
- 26. 在Actionscript 3.0中调用共享对象的远程方法
- 27. CLLocationManager didDetermineState方法不在应用程序在后台时调用
- 28. GWT RPC,Spring,JPA/Hibernate - null回调方法
- 29. 以编程方式为Python中的SOAP端点调用RPC方法
- 30. 用于嵌入式平台的C++中的简单JSON-RPC?
你需要PlatformA运行的代理,你需要身份验证设置发件人在第7步PlatformA只是在监听它的VIP地址 –