我有平臺和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地址 –