类 DefaultUserDestinationResolver

  • 所有已实现的接口:
    UserDestinationResolver

    public class DefaultUserDestinationResolver
    extends Object
    implements UserDestinationResolver
    A default implementation of UserDestinationResolver that relies on a SimpUserRegistry to find active sessions for a user.

    When a user attempts to subscribe, e.g. to "/user/queue/position-updates", the "/user" prefix is removed and a unique suffix added based on the session id, e.g. "/queue/position-updates-useri9oqdfzo" to ensure different users can subscribe to the same logical destination without colliding.

    When sending to a user, e.g. "/user/{username}/queue/position-updates", the "/user/{username}" prefix is removed and a suffix based on active session id's is added, e.g. "/queue/position-updates-useri9oqdfzo".

    从以下版本开始:
    4.0
    作者:
    Rossen Stoyanchev, Brian Clozel
    • 构造器详细资料

      • DefaultUserDestinationResolver

        public DefaultUserDestinationResolver​(SimpUserRegistry userRegistry)
        Create an instance that will access user session id information through the provided registry.
        参数:
        userRegistry - the registry, never null
    • 方法详细资料

      • setUserDestinationPrefix

        public void setUserDestinationPrefix​(String prefix)
        The prefix used to identify user destinations. Any destinations that do not start with the given prefix are not be resolved.

        The default prefix is "/user/".

        参数:
        prefix - the prefix to use
      • setRemoveLeadingSlash

        public void setRemoveLeadingSlash​(boolean remove)
        Use this property to indicate whether the leading slash from translated user destinations should be removed or not. This depends on the destination prefixes the message broker is configured with.

        By default this is set to false, i.e. "do not change the target destination", although AbstractMessageBrokerConfiguration may change that to true if the configured destinations do not have a leading slash.

        参数:
        remove - whether to remove the leading slash
        从以下版本开始:
        4.3.14
      • isRemoveLeadingSlash

        public boolean isRemoveLeadingSlash()
        Whether to remove the leading slash from target destinations.
        从以下版本开始:
        4.3.14
      • setPathMatcher

        @Deprecated
        public void setPathMatcher​(PathMatcher pathMatcher)
        已过时。
        as of 4.3.14 this property is no longer used and is replaced by setRemoveLeadingSlash(boolean) that indicates more explicitly whether to keep the leading slash which may or may not be the case regardless of how the PathMatcher is configured.
        Provide the PathMatcher in use for working with destinations which in turn helps to determine whether the leading slash should be kept in actual destinations after removing the userDestinationPrefix.

        By default actual destinations have a leading slash, e.g. /queue/position-updates which makes sense with brokers that support destinations with slash as separator. When a PathMatcher is provided that supports an alternative separator, then resulting destinations won't have a leading slash, e.g. jms.queue.position-updates.

        参数:
        pathMatcher - the PathMatcher used to work with destinations
        从以下版本开始:
        4.3
      • getTargetDestination

        protected String getTargetDestination​(String sourceDestination,
                                              String actualDestination,
                                              String sessionId,
                                              String user)
        This method determines how to translate the source "user" destination to an actual target destination for the given active user session.
        参数:
        sourceDestination - the source destination from the input message.
        actualDestination - a subset of the destination without any user prefix.
        sessionId - the id of an active user session, never null.
        user - the target user, possibly null, e.g if not authenticated.
        返回:
        a target destination, or null if none