您可以通过两种不同的方式执行此操作:
您可以多次调用 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