code: def _get_consume_message(self, channel_info):
      while True:
          message = channel_info.consume()
          body = message.data()
          properties = message.properties()
          message_id = message.message_id()
          yield message_id, properties, body
  
imports: import logging
  from typing import List, Optional
  from fate.arch.federation.api import PartyMeta
  from fate.arch.federation.message_queue import MessageQueueBasedFederation
  from ._mq_channel import DEFAULT_CLUSTER, DEFAULT_SUBSCRIPTION_NAME, DEFAULT_TENANT, MQChannel
  from ._pulsar_manager import PulsarManager
label_desc: Use image node_id 9 for calling the PulsarFederation obj's underlying member method code with example usage: obj._get_consume_message(channel_info) without return types