Class DefaultTopicResolver

java.lang.Object
org.springframework.pulsar.core.DefaultTopicResolver
All Implemented Interfaces:
TopicResolver

public class DefaultTopicResolver extends Object implements TopicResolver
Topic resolver that accepts custom type to topic mappings and uses the mappings during topic resolution.

Message type to topic mappings can be configured with addCustomTopicMapping(Class, String).

Author:
Chris Bono
  • Constructor Details

    • DefaultTopicResolver

      public DefaultTopicResolver()
  • Method Details

    • addCustomTopicMapping

      @Nullable public String addCustomTopicMapping(Class<?> messageType, String topic)
      Adds a custom mapping from message type to topic.
      Parameters:
      messageType - the message type
      topic - the topic to use for messages of type messageType
      Returns:
      the previously mapped topic or null if there was no mapping for messageType.
    • removeCustomMapping

      @Nullable public String removeCustomMapping(Class<?> messageType)
      Removes the custom mapping from message type to topic.
      Parameters:
      messageType - the message type
      Returns:
      the previously mapped topic or null if there was no mapping for messageType.
    • getCustomTopicMappings

      public Map<Class<?>,String> getCustomTopicMappings()
      Gets the currently registered custom mappings from message type to topic.
      Returns:
      unmodifiable map of custom mappings
    • resolveTopic

      public Resolved<String> resolveTopic(@Nullable String userSpecifiedTopic, Supplier<String> defaultTopicSupplier)
      Description copied from interface: TopicResolver
      Resolve the topic name to use.
      Specified by:
      resolveTopic in interface TopicResolver
      Parameters:
      userSpecifiedTopic - the topic specified by the user
      defaultTopicSupplier - supplies the default topic to use (use a supplier that returns null to signal no default)
      Returns:
      the topic to use or empty if no topic could be resolved
    • resolveTopic

      public <T> Resolved<String> resolveTopic(@Nullable String userSpecifiedTopic, @Nullable T message, Supplier<String> defaultTopicSupplier)
      Description copied from interface: TopicResolver
      Resolve the topic name to use for the given message.
      Specified by:
      resolveTopic in interface TopicResolver
      Type Parameters:
      T - the message type
      Parameters:
      userSpecifiedTopic - the topic specified by the user
      message - the message instance being produced or consumed
      defaultTopicSupplier - supplies the default topic to use (use a supplier that returns null to signal no default)
      Returns:
      the topic to use or empty if no topic could be resolved
    • resolveTopic

      public Resolved<String> resolveTopic(@Nullable String userSpecifiedTopic, @Nullable Class<?> messageType, Supplier<String> defaultTopicSupplier)
      Description copied from interface: TopicResolver
      Resolve the topic name to use for the given message type.
      Specified by:
      resolveTopic in interface TopicResolver
      Parameters:
      userSpecifiedTopic - the topic specified by the user
      messageType - the message type being produced or consumed
      defaultTopicSupplier - supplies the default topic to use (use a supplier that returns null to signal no default)
      Returns:
      the topic to use or empty if no topic could be resolved
    • doResolveTopic

      protected Resolved<String> doResolveTopic(@Nullable String userSpecifiedTopic, @Nullable Class<?> messageType, Supplier<String> defaultTopicSupplier)