code: def add_listener(self, on_message=None):
          
          request = topic_add_message_listener_codec.encode_request(self.name, False)
  
          def handle(item, publish_time, uuid):
              member = self._client.cluster.get_member_by_uuid(uuid)
              item_event = TopicMessage(self.name, item, publish_time, member, self._to_object)
              on_message(item_event)
  
          return self._start_listening(request,
                                       lambda m: topic_add_message_listener_codec.handle(m, handle),
                                       lambda r: topic_add_message_listener_codec.decode_response(r)['response'],
                                       self.partition_key)
docs: Subscribes to this topic. When someone publishes a message on this topic, on_message() function is called if
          provided.
  
          :param on_message: (Function), function to be called when a message is published.
          :return: (str), a registration id which is used as a key to remove the listener.