2016-07-23 1 views
1

トピックを購読するために次のコードを使用すると、同じコードを使用して別のトピックを購読することはできません。さまざまなトピックをどのように購読できますか?Volttronの異なるトピックを購読するには

@PubSub.subscribe('pubsub', 'EnergyManagement/CurrentPrice') 
def on_match(self, peer, sender, bus, topic, headers, message): 

@PubSub.subscribe('pubsub', 'EnergyManagement/futurePrice') 
def on_match(self, peer, sender, bus, topic, headers, message): 

答えて

3

あなたは、この2種類の方法を行うことができます。

あなたがself.vip.pubsub.subscribeする複数の呼び出しを使用することができます。

これらの呼び出しは、エージェントの起動が完了した後でなければなりません。 Aminが彼の答えで言及しているように、あなたは "onstart"メソッドでこれを行うことができます。このメソッドを使用すると、エージェントの起動後にいつでもサブスクリプションを動的に変更できます。

@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) 

それとも、同じクラスのメソッドで複数のデコレータを使用することができます。

@PubSub.subscribe('pubsub', 'EnergyManagement/CurrentPrice') 
@PubSub.subscribe('pubsub', 'EnergyManagement/futurePrice') 
def on_match(self, peer, sender, bus, topic, headers, message): 
    pass 
1

同じ方法で複数のトピックを購読する場合は、別の方法で購読することができます。あなたの「ONSTART」の方法でこれを行うことができます:

self.vip.pubsub.subscribe(peer='pubsub',prefix=”topic1”,callback=callback_method) 

self.vip.pubsub.subscribe(peer='pubsub',prefix=”topic2”,callback=callback_method) 
関連する問題