code: def _get_or_create_topic(
      self, party, topic_suffix
  ) -> typing.Tuple[Party, str, typing.Any]:
      if (party, topic_suffix) not in self._topic_map:
          topic_pair = self._maybe_create_topic_and_replication(
              party, topic_suffix
          )
          self._topic_map[(party, topic_suffix)] = topic_pair
  
      topic_pair = self._topic_map[(party, topic_suffix)]
      return party, topic_suffix, topic_pair
  
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 16 for calling the MessageQueueBasedFederation obj's underlying member method code with example usage: obj._get_or_create_topic(party, topic_suffix) and returns: party,  topic_suffix,  topic_pair