Wenn ich den folgenden Code zum Abonnieren eines Themas verwende, kann ich nicht denselben Code verwenden, um ein anderes Thema zu abonnieren. Wie kann ich verschiedene Themen abonnieren?So abonnieren Sie verschiedene Themen in Volttron
1
A
Antwort
3
Sie können diese zwei verschiedene Möglichkeiten:
Sie mehrere Anrufe verwenden können, um self.vip.pubsub.subscribe.
Diese Anrufe müssen nach dem Start eines Agenten erfolgen. Wie Amin in seiner Antwort erwähnt, können Sie dies in einer "Onstart" -Methode tun. Diese Methode kann verwendet werden, um Abonnements jederzeit dynamisch zu ändern, nachdem ein Agent gestartet wurde.
@Core.receiver('onstart')
def my_onstart_method(self, sender, **kwargs):
self.vip.pubsub.subscribe(peer='pubsub', prefix="path/to/topic1", callback=self.on_match)
self.vip.pubsub.subscribe(peer='pubsub', prefix="path/to/topic2", callback=self.on_match)
Oder können Sie mehrere Dekorateure auf der gleichen Klasse Methode verwenden:
@PubSub.subscribe('pubsub', 'EnergyManagement/CurrentPrice')
@PubSub.subscribe('pubsub', 'EnergyManagement/futurePrice')
def on_match(self, peer, sender, bus, topic, headers, message):
pass
1
Wenn Sie die gleiche Methode verwenden möchten, um mehrere Themen zu abonnieren, können Sie eine alternative Möglichkeit zum Abonnieren verwenden. Sie können dies tun, in Ihrem „onstart“ Methode:
self.vip.pubsub.subscribe(peer='pubsub',prefix=”topic1”,callback=callback_method)
self.vip.pubsub.subscribe(peer='pubsub',prefix=”topic2”,callback=callback_method)