code: def _create_topic_by_client_mode(self, party, topic_suffix):
      # gen names
      vhost_name = self._get_vhost(party)
      send_queue_name = f"{self._session_id}-{self._party.role}-{self._party.party_id}-{party.role}-{party.party_id}-{topic_suffix}"
      receive_queue_name = f"{self._session_id}-{party.role}-{party.party_id}-{self._party.role}-{self._party.party_id}-{topic_suffix}"
  
      topic_pair = _TopicPair(
          namespace=self._session_id,
          vhost=vhost_name,
          send=send_queue_name,
          receive=receive_queue_name,
      )
  
      # initial vhost
      if topic_pair.vhost not in self._vhost_set:
          self._rabbit_manager.create_vhost(topic_pair.vhost)
          self._rabbit_manager.add_user_to_vhost(
              self._mq.union_name, topic_pair.vhost
          )
          self._vhost_set.add(topic_pair.vhost)
  
      # initial send queue, the name is send-${vhost}
      self._rabbit_manager.create_queue(
          topic_pair.vhost, topic_pair.send
      )
      # initial receive queue, the name is receive-${vhost}
      self._rabbit_manager.create_queue(
          topic_pair.vhost, topic_pair.receive
      )
  
      return topic_pair
  
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 7 for calling the RabbitmqFederation obj's underlying member method code with example usage: obj._create_topic_by_client_mode(party, topic_suffix) and returns: topic_pair