code: def __init__(
      self,
      host,
      port,
      user,
      password,
      namespace,
      vhost,
      send_queue_name,
      receive_queue_name,
      src_party_id,
      src_role,
      dst_party_id,
      dst_role,
      extra_args: dict,
  ):
      self._host = host
      self._port = port
      self._credentials = pika.PlainCredentials(user, password)
      self._namespace = namespace
      self._vhost = vhost
      self._send_queue_name = send_queue_name
      self._receive_queue_name = receive_queue_name
      self._src_party_id = src_party_id
      self._src_role = src_role
      self._dst_party_id = dst_party_id
      self._dst_role = dst_role
      self._conn = None
      self._channel = None
      self._extra_args = extra_args
  
      if "heartbeat" not in self._extra_args:
          self._extra_args["heartbeat"] = 3600
  
file_path: FATE/python/fate/arch/federation/backends/rabbitmq/_mq_channel.py
imports: import json
  import logging
  import pika
  from fate.arch.federation.message_queue import nretry
label_desc: Use image node_id 1 to create a new MQChannel object from inherited base classes: object with example: obj = MQChannel(host, port, user, password, namespace, vhost, send_queue_name, receive_queue_name, src_party_id, src_role, dst_party_id, dst_role, extra_args)