Class DefaultDestinationTopicResolver

All Implemented Interfaces:
EventListener, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware, org.springframework.context.ApplicationListener<org.springframework.context.event.ContextRefreshedEvent>, DestinationTopicContainer, DestinationTopicResolver

public class DefaultDestinationTopicResolver extends ExceptionClassifier implements DestinationTopicResolver, org.springframework.context.ApplicationListener<org.springframework.context.event.ContextRefreshedEvent>, org.springframework.context.ApplicationContextAware
Default implementation of the DestinationTopicResolver interface. The container is closed when a ContextRefreshedEvent is received and no more destinations can be added after that.
Since:
2.7
  • Constructor Details

    • DefaultDestinationTopicResolver

      public DefaultDestinationTopicResolver(Clock clock)
      Constructs an instance with the given clock.
      Parameters:
      clock - the clock to be used for time-based operations such as verifying timeouts.
      Since:
      2.9
    • DefaultDestinationTopicResolver

      public DefaultDestinationTopicResolver()
      Constructs an instance with a default clock.
      Since:
      2.9
  • Method Details

    • resolveDestinationTopic

      public DestinationTopic resolveDestinationTopic(String mainListenerId, String topic, Integer attempt, Exception e, long originalTimestamp)
      Description copied from interface: DestinationTopicResolver
      Resolves the destination topic for the failed message.
      Specified by:
      resolveDestinationTopic in interface DestinationTopicResolver
      Parameters:
      mainListenerId - the listener id.
      topic - the current topic for the message.
      attempt - the number of processing attempts already made for that message.
      e - the exception the message processing has thrown
      originalTimestamp - the time when the first attempt to process the message threw an exception.
      Returns:
      the DestinationTopic for the given parameters.
    • getDestinationTopicByName

      public DestinationTopic getDestinationTopicByName(String mainListenerId, String topic)
      Description copied from interface: DestinationTopicContainer
      Returns the DestinationTopic instance registered for that topic.
      Specified by:
      getDestinationTopicByName in interface DestinationTopicContainer
      Parameters:
      mainListenerId - the listener id.
      topic - the topic name of the DestinationTopic to be returned.
      Returns:
      the DestinationTopic instance registered for that topic.
    • getDltFor

      @Nullable public DestinationTopic getDltFor(String mainListenerId, String topicName)
      Description copied from interface: DestinationTopicContainer
      Returns the DestinationTopic instance registered as DLT for the given topic, or null if none is found.
      Specified by:
      getDltFor in interface DestinationTopicContainer
      Parameters:
      mainListenerId - the listener id.
      topicName - the topic name for which to look the DLT for
      Returns:
      The DestinationTopic instance corresponding to the DLT.
    • getNextDestinationTopicFor

      public DestinationTopic getNextDestinationTopicFor(String mainListenerId, String topic)
      Description copied from interface: DestinationTopicContainer
      Returns the DestinationTopic instance registered as the next destination topic in the chain for the given topic. Note that this might not correspond to the actual next topic a message will be forwarded to, since that depends on different factors. If you need to find out the exact next topic for a message use the DestinationTopicResolver.resolveDestinationTopic(String, String, Integer, Exception, long) method instead.
      Specified by:
      getNextDestinationTopicFor in interface DestinationTopicContainer
      Parameters:
      mainListenerId - the listener id.
      topic - the topic name of the DestinationTopic to be returned.
      Returns:
      the next DestinationTopic in the chain registered for that topic.
    • addDestinationTopics

      public void addDestinationTopics(String mainListenerId, List<DestinationTopic> destinationsToAdd)
      Description copied from interface: DestinationTopicContainer
      Adds the provided destination topics to the container.
      Specified by:
      addDestinationTopics in interface DestinationTopicContainer
      Parameters:
      mainListenerId - the listener id.
      destinationsToAdd - the DestinationTopic list to add.
    • onApplicationEvent

      public void onApplicationEvent(org.springframework.context.event.ContextRefreshedEvent event)
      Specified by:
      onApplicationEvent in interface org.springframework.context.ApplicationListener<org.springframework.context.event.ContextRefreshedEvent>
    • isContextRefreshed

      public boolean isContextRefreshed()
      Return true if the application context is refreshed.
      Returns:
      true if refreshed.
      Since:
      2.7.8
    • setApplicationContext

      public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext) throws org.springframework.beans.BeansException
      Specified by:
      setApplicationContext in interface org.springframework.context.ApplicationContextAware
      Throws:
      org.springframework.beans.BeansException