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.
As of 4.2, this class supports a selector
header on subscription messages with Spring EL expressions evaluated against
the headers to filter out messages in addition to destination matching.
- 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 this is set to "selector". You can set it to a different name, or to
null
to turn off support for a selector header.- Parameters:
selectorHeaderName
- the name to use for a selector header- 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
-