code: def _destroy(self):
      LOGGER.debug("[rabbitmq.cleanup]start to cleanup...")
      for party in self.parties:
          if self.local_party == party:
              continue
          vhost = self._get_vhost(
              Party(role=party[0], party_id=party[1])
          )
          LOGGER.debug(
              f"[rabbitmq.cleanup]start to cleanup vhost {vhost}..."
          )
          self._rabbit_manager.clean(vhost)
          LOGGER.debug(f"[rabbitmq.cleanup]cleanup vhost {vhost} done")
      if self._mq.union_name:
          LOGGER.debug(
              f"[rabbitmq.cleanup]clean user {self._mq.union_name}."
          )
          self._rabbit_manager.delete_user(user=self._mq.union_name)
  
imports: import json
  from logging import getLogger
  from typing import List, Optional
  from fate.arch.federation.api import PartyMeta
  from fate.arch.federation.message_queue import MessageQueueBasedFederation, Party
  from ._mq_channel import MQChannel
  from ._rabbit_manager import RabbitManager
label_desc: Use image node_id 4 for calling the RabbitmqFederation obj's underlying member method code with example usage: obj._destroy() without return types