Class DefaultSubscriptionRegistry
java.lang.Object
org.springframework.messaging.simp.broker.AbstractSubscriptionRegistry
org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry
- All Implemented Interfaces:
SubscriptionRegistry
Implementation of
SubscriptionRegistry
that stores subscriptions
in memory and uses a PathMatcher
for matching destinations.
This class also supports an optional selector header on subscription messages with Spring Expression Language (SpEL) expressions evaluated against the headers to filter out messages in addition to destination matching. As of Spring Framework 6.1, the SpEL support is disabled by default, but it can be enabled by setting a selector header name.
- Since:
- 4.0
- Author:
- Rossen Stoyanchev, Sebastien Deleuze, Juergen Hoeller, Sam Brannen
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Default maximum number of entries for the destination cache: 1024.Fields inherited from class org.springframework.messaging.simp.broker.AbstractSubscriptionRegistry
logger
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
addSubscriptionInternal
(String sessionId, String subscriptionId, String destination, Message<?> message) protected MultiValueMap<String,
String> findSubscriptionsInternal
(String destination, Message<?> message) int
Return the maximum number of entries for the resolved destination cache.Return the configuredPathMatcher
.Return the name of the selector header.protected void
removeSubscriptionInternal
(String sessionId, String subscriptionId, Message<?> message) void
setCacheLimit
(int cacheLimit) Specify the maximum number of entries for the resolved destination cache.void
setPathMatcher
(PathMatcher pathMatcher) Specify thePathMatcher
to use.void
setSelectorHeaderName
(String selectorHeaderName) Configure the name of a header that a subscription message can have for the purpose of filtering messages matched to the subscription.void
unregisterAllSubscriptions
(String sessionId) Remove all subscriptions associated with the given sessionId.Methods inherited from class org.springframework.messaging.simp.broker.AbstractSubscriptionRegistry
findSubscriptions, registerSubscription, unregisterSubscription
-
Field Details
-
DEFAULT_CACHE_LIMIT
public static final int DEFAULT_CACHE_LIMITDefault maximum number of entries for the destination cache: 1024.- See Also:
-
-
Constructor Details
-
DefaultSubscriptionRegistry
public DefaultSubscriptionRegistry()
-
-
Method Details
-
setPathMatcher
Specify thePathMatcher
to use. -
getPathMatcher
Return the configuredPathMatcher
. -
setCacheLimit
public void setCacheLimit(int cacheLimit) Specify the maximum number of entries for the resolved destination cache. Default is 1024. -
getCacheLimit
public int getCacheLimit()Return the maximum number of entries for the resolved destination cache. -
setSelectorHeaderName
Configure the name of a header that a subscription message can have for the purpose of filtering messages matched to the subscription.The header value is expected to be a Spring Expression Language (SpEL) boolean expression to be applied to the headers of messages matched to the subscription.
For example:
headers.foo == 'bar'
By default the selector header name is set to
null
which disables this feature. You can set it to"selector"
or a different name to enable support for a selector header.- Parameters:
selectorHeaderName
- the name to use for a selector header, ornull
or blank to disable selector header support- Since:
- 4.2
-
getSelectorHeaderName
Return the name of the selector header.- Since:
- 4.2
- See Also:
-
addSubscriptionInternal
protected void addSubscriptionInternal(String sessionId, String subscriptionId, String destination, Message<?> message) - Specified by:
addSubscriptionInternal
in classAbstractSubscriptionRegistry
-
removeSubscriptionInternal
protected void removeSubscriptionInternal(String sessionId, String subscriptionId, Message<?> message) - Specified by:
removeSubscriptionInternal
in classAbstractSubscriptionRegistry
-
unregisterAllSubscriptions
Description copied from interface:SubscriptionRegistry
Remove all subscriptions associated with the given sessionId. -
findSubscriptionsInternal
protected MultiValueMap<String,String> findSubscriptionsInternal(String destination, Message<?> message) - Specified by:
findSubscriptionsInternal
in classAbstractSubscriptionRegistry
-