当我使用以下代码订阅主题时,我不能使用相同的代码订阅某个不同的主题。我如何订阅不同的主题?
@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):
答案 0 :(得分:3)
您可以通过以下两种方式完成此任务:
您可以使用多次调用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 :(得分:1)
如果您想使用相同的方法订阅多个主题,您可以使用其他方式进行订阅。您可以在“onstart”方法中执行此操作:
self.vip.pubsub.subscribe(peer='pubsub',prefix=”topic1”,callback=callback_method)
self.vip.pubsub.subscribe(peer='pubsub',prefix=”topic2”,callback=callback_method)