def publish(self, topic_name, msg): if (topic_name in self.topics) and self.subscriptions[topic_name]: self.message_queue[self.subscriptions[topic_name]].append(msg) else: raise Exception('Topic or subscription does not exist') def pull(self, sub_name): if self.message_queue.get(sub_name): if len(self.message_queue[sub_name]) == 0: return [] else: return self.message_queue[sub_name].pop(0) else: raise Exception('Subscription does not exist') if __name__ == '__main__': topic = 'topic' subscription = 'sub' mb = Broker() pub = Publisher(broker=mb, topic_name=topic) sub = Subscriber(broker=mb, topic_name=topic, sub_name=subscription) pub.create_topic() print(mb.topics) sub.subscribe() print(mb.subscriptions) print(mb.message_queue) pub.publish('Hi there') message = sub.pull() print(message)