code: def _get_channel(
      self,
      topic_pair,
      src_party_id,
      src_role,
      dst_party_id,
      dst_role,
      mq=None,
      conf: dict = None,
  ):
      LOGGER.debug(
          f"rabbitmq federation _get_channel, src_party_id={src_party_id}, src_role={src_role},"
          f"dst_party_id={dst_party_id}, dst_role={dst_role}"
      )
      return MQChannel(
          host=mq.host,
          port=mq.port,
          user=mq.union_name,
          password=mq.policy_id,
          namespace=topic_pair.namespace,
          vhost=topic_pair.vhost,
          send_queue_name=topic_pair.send,
          receive_queue_name=topic_pair.receive,
          src_party_id=src_party_id,
          src_role=src_role,
          dst_party_id=dst_party_id,
          dst_role=dst_role,
          extra_args=conf,
      )
  
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 10 for calling the RabbitmqFederation obj's underlying member method code with example usage: obj._get_channel(topic_pair, src_party_id, src_role, dst_party_id, dst_role, mq, conf) and returns: MQChannel