code: def _send_obj(self, name, tag, data, channel_infos):
      for info in channel_infos:
          properties = {
              "content_type": "text/plain",
              "app_id": info._dst_party_id,
              "message_id": name,
              "correlation_id": tag,
          }
          LOGGER.debug(
              f"[federation._send_obj]properties:{properties}."
          )
          info.produce(body=data, properties=properties)
  
imports: import json
  import logging
  import sys
  import typing
  from typing import List
  from fate.arch.computing.api import KVTableContext
  from fate.arch.federation.api import Federation, PartyMeta, TableMeta
  from ._datastream import Datastream
  from ._parties import Party
label_desc: Use image node_id 19 for calling the MessageQueueBasedFederation obj's underlying member method code with example usage: obj._send_obj(name, tag, data, channel_infos) without return types