Package org.springframework.pulsar.core
Class DefaultTopicResolver
java.lang.Object
org.springframework.pulsar.core.DefaultTopicResolver
- All Implemented Interfaces:
Aware
,BeanClassLoaderAware
,BeanFactoryAware
,TopicResolver
public class DefaultTopicResolver
extends Object
implements TopicResolver, BeanFactoryAware, BeanClassLoaderAware
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, Aleksei Arsenev, Jonas Geiregat
-
Constructor Summary
ConstructorsConstructorDescriptionConstructs a new DefaultTopicResolver.DefaultTopicResolver
(ExpressionResolver expressionResolver) Constructs a new DefaultTopicResolver with the given expression resolver. -
Method Summary
Modifier and TypeMethodDescriptionaddCustomTopicMapping
(Class<?> messageType, String topic) Adds a custom mapping from message type to topic.doResolveTopic
(String userSpecifiedTopic, Class<?> messageType, Supplier<String> defaultTopicSupplier) getCustomTopicMapping
(Class<?> messageType) Gets the currently registered custom mapping for the specified message type.Deprecated, for removal: This API element is subject to removal in a future version.removeCustomMapping
(Class<?> messageType) Removes the custom mapping from message type to topic.resolveTopic
(String userSpecifiedTopic, Class<?> messageType, Supplier<String> defaultTopicSupplier) Resolve the topic name to use for the given message type.resolveTopic
(String userSpecifiedTopic, Supplier<String> defaultTopicSupplier) Resolve the topic name to use.resolveTopic
(String userSpecifiedTopic, T message, Supplier<String> defaultTopicSupplier) Resolve the topic name to use for the given message.void
setBeanClassLoader
(ClassLoader classLoader) void
setBeanFactory
(BeanFactory beanFactory) void
usePulsarMessageAnnotations
(boolean usePulsarMessageAnnotations) Sets whether to inspect message classes for the@PulsarMessage
annotation during topic resolution.
-
Constructor Details
-
DefaultTopicResolver
Constructs a new DefaultTopicResolver with the given expression resolver.- Parameters:
expressionResolver
- the expression resolver to use for resolving topic
-
DefaultTopicResolver
public DefaultTopicResolver()Constructs a new DefaultTopicResolver.
-
-
Method Details
-
usePulsarMessageAnnotations
public void usePulsarMessageAnnotations(boolean usePulsarMessageAnnotations) Sets whether to inspect message classes for the@PulsarMessage
annotation during topic resolution.- Parameters:
usePulsarMessageAnnotations
- whether to inspect messages for the annotation
-
addCustomTopicMapping
Adds a custom mapping from message type to topic.- Parameters:
messageType
- the message typetopic
- the topic to use for messages of typemessageType
- Returns:
- the previously mapped topic or
null
if there was no mapping formessageType
.
-
removeCustomMapping
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 formessageType
.
-
getCustomTopicMappings
Deprecated, for removal: This API element is subject to removal in a future version.deprecated in favor ofgetCustomTopicMapping(Class)
Gets the currently registered custom mappings from message type class name to topic.- Returns:
- unmodifiable map of custom mappings
-
getCustomTopicMapping
Gets the currently registered custom mapping for the specified message type.- Parameters:
messageType
- the message type- Returns:
- optional custom topic registered for the message type
-
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 interfaceTopicResolver
- Parameters:
userSpecifiedTopic
- the topic specified by the userdefaultTopicSupplier
- supplies the default topic to use (use a supplier that returnsnull
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 interfaceTopicResolver
- Type Parameters:
T
- the message type- Parameters:
userSpecifiedTopic
- the topic specified by the usermessage
- the message instance being produced or consumeddefaultTopicSupplier
- supplies the default topic to use (use a supplier that returnsnull
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 interfaceTopicResolver
- Parameters:
userSpecifiedTopic
- the topic specified by the usermessageType
- the message type being produced or consumeddefaultTopicSupplier
- supplies the default topic to use (use a supplier that returnsnull
to signal no default)- Returns:
- the topic to use or
empty
if no topic could be resolved
-
doResolveTopic
-
setBeanFactory
- Specified by:
setBeanFactory
in interfaceBeanFactoryAware
- Throws:
BeansException
-
setBeanClassLoader
- Specified by:
setBeanClassLoader
in interfaceBeanClassLoaderAware
-
getCustomTopicMapping(Class)