私はプラットフォームAとプラットフォームBを持っており、プラットフォームBからプラットフォームAのRPCメソッドを呼び出す必要があります。この質問は既に読んでいます。 In VOLTTRON, how to use VIP to get agents talk across remote platform instances? 既知のhostsファイルと新しいvolttron-ctl auth addインタフェースについては何も言及していないので、古くなっている可能性があります。また、私はまだserverkeyの秘密鍵のパラメータでコメントに記載された大規模なURLを含める必要がありますか? https://github.com/VOLTTRON/volttron/blob/5cc71e9982338e242bf801da372aa66ed14abbd9/examples/SimpleForwarder/simpleforwarder/simpleforwarder.py この例のvip接続のURLは、 "destination-vip": "ipc://@/tmp/v4home/run/vip.socket"、 ですが、これはSimpleForwarderのソースコードです。スタックオーバーフローの質問で提供される回答と一致しません。 http://volttron.readthedocs.io/en/4.1/core_services/messagebus/VIP/VIP-Authentication.html このセクションでは、VIP経由での認証方法についていくつかの情報を提供しますが、他のプラットフォームのエージェントでRPCを呼び出すにはどのような手順が必要ですか?誰かがこれを行うための更新された方法(volttron 4.1のために)がうまくいけば、ステップバイステップで明確にすることができますか?リモートプラットフォームで@RPCメソッドを呼び出す
0
A
答えて
2
リモートエージェントでRPC呼び出しを呼び出すことは、別のプラットフォームでpub/subを実行することと非常によく似ています。実際の例では、リモートヒストリアンでRPCメソッドを呼び出すDataMoverエージェントを調べることができます。それは既知のホストファイルにかどう
まずそれが先のためにサーバキーを取得します。
hosts = KnownHostsStore()
serverkey = hosts.serverkey(destination_vip)
ない場合は、エージェントの設定ファイルからそれを取得します。
次に、historian_setupメソッドは、vip agent utilsのbuilding_agentメソッドを使用して、URLを構築する必要がないように、address、serverkey、public、およびsecret keyを渡して、別のプラットフォームへのリンクを作成します。
その後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)
手順このプロセスには、以下のとおりです。TargetAgentが動作している
- スタートプラット。
- はとプラットのためのサーバキーを取得します。
vctl auth serverkey
- スタートPlatformB
PlatformB上の既知のホストにプラットを追加します。PlatformB上
vctl add-known-host --host tcp://tcp://xxx.xxx.xxx.xxx:YYYY --serverkey SERVERKEY_FOR_A
または 設定SendingAgentステップ2からサーバキーと、プラットの宛先VIPアドレス(TCPを:/ /xxx.xxx.xxx.xxx:YYYY)でSendingAgentのための公開鍵を取得しPlatformB
- にSendingAgentをインストールします。
vctl auth publickey
- とプラットにSendingAgentの資格情報を追加します:
vctl auth add
SendingAgentは今TargetAgent上のRPCメソッドを呼び出すことができるはずのあなたはプラット上で実行中のエージェントを必要とし、手順7のように送信者の認証セットアップが必要
関連する問題
- 1. RPC:メソッド呼び出しとAPI呼び出し
- 2. 呼び出すRPCのRPCソケットメソッド
- 3. ボルトトロンの外で@RPCメソッドを呼び出す
- 4. アトミックRPC呼び出し
- 5. HTTP呼び出しはRPCですか?
- 6. RPC呼び出しの完了他のメソッドやコードの実行?
- 7. C++リモートオブジェクトのメソッド呼び出し(RPC同様)
- 8. GWT RPC。 onSuccess()メソッドが呼び出したとき?
- 9. GAE Go Json-RPC呼び出しの例
- 10. rpc sendResponse panic:reflect:reflect.Value.Int of ptrの呼び出し
- 11. VOLTTRON RPC呼び出しのメカニズム
- 12. オフラインRPCサーバーへのRPC呼び出しの試行方法
- 13. 他のオブジェクトからメソッドを呼び出すメソッド呼び出し
- 14. メソッド内でメソッドを呼び出すruby
- 15. Spring AOP @AfterThrowing - メソッドの詳細を呼び出すメソッドの呼び出し(メソッドを呼び出さない)
- 16. 1回の呼び出しでメソッドを呼び出す
- 17. 各メソッド呼び出しでjQueryがコンストラクタを呼び出す
- 18. GoでJSON-RPCを正しく呼び出す方法は?
- 19. ViewModelメソッドを呼び出す
- 20. Pythonメソッドを呼び出す
- 21. メソッドを呼び出すか?
- 22. メソッドを呼び出す、C#
- 23. Javaメソッドを呼び出す
- 24. メソッドを呼び出す
- 25. C#メソッドを呼び出す
- 26. メソッドを呼び出すボタンアクション
- 27. Pythonを呼び出すメソッド
- 28. voidメソッドを呼び出す
- 29. AnchorPointメソッドを呼び出す
- 30. C#でメソッド/呼び出しを別のメソッドから呼び出す方法は?
PlatformAはVIPアドレスでリッスンしています –