org.springframework.messaging.simp.config

## Class MessageBrokerRegistry

- java.lang.Object
- - org.springframework.messaging.simp.config.MessageBrokerRegistry

    public class MessageBrokerRegistry
    extends Object

A registry for configuring message broker options.

Since:
  4.0
Author:
  Rossen Stoyanchev, Sebastien Deleuze

### Constructor Summary

Constructors
Constructor and Description
`MessageBrokerRegistry(SubscribableChannel clientInboundChannel, MessageChannel clientOutboundChannel)`

### Method Summary

All Methods Instance Methods Concrete Methods
`ChannelRegistration` `configureBrokerChannel()` Customize the channel used to send messages from the application to the message broker.
`SimpleBrokerRegistration` `enableSimpleBroker(String... destinationPrefixes)` Enable a simple message broker and configure one or more prefixes to filter destinations targeting the broker (e.g.
`StompBrokerRelayRegistration` `enableStompBrokerRelay(String... destinationPrefixes)` Enable a STOMP broker relay and configure the destination prefixes supported by the message broker.
`protected Collection<String>` `getApplicationDestinationPrefixes()`
`protected ChannelRegistration` `getBrokerChannelRegistration()`
`protected org.springframework.util.PathMatcher` `getPathMatcher()`
`protected SimpleBrokerMessageHandler` `getSimpleBroker(SubscribableChannel brokerChannel)`
`protected StompBrokerRelayMessageHandler` `getStompBrokerRelay(SubscribableChannel brokerChannel)`
`protected String` `getUserDestinationBroadcast()`
`protected String` `getUserDestinationPrefix()`
`protected String` `getUserRegistryBroadcast()`
`protected Integer` `getUserRegistryOrder()`
`MessageBrokerRegistry` `setApplicationDestinationPrefixes(String... prefixes)` Configure one or more prefixes to filter destinations targeting application annotated methods.
`MessageBrokerRegistry` `setCacheLimit(int cacheLimit)` Configure the cache limit to apply for registrations with the broker.
`MessageBrokerRegistry` `setPathMatcher(org.springframework.util.PathMatcher pathMatcher)` Configure the PathMatcher to use to match the destinations of incoming messages to `@MessageMapping` and `@SubscribeMapping` methods.
`MessageBrokerRegistry` `setPreservePublishOrder(boolean preservePublishOrder)` Whether the client must receive messages in the order of publication.
`MessageBrokerRegistry` `setUserDestinationPrefix(String destinationPrefix)` Configure the prefix used to identify user destinations.
`void` `setUserRegistryOrder(int order)` Set the order for the `SimpUserRegistry` to use as a `SmartApplicationListener`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### MessageBrokerRegistry

    public MessageBrokerRegistry(SubscribableChannel clientInboundChannel,
                                 MessageChannel clientOutboundChannel)

### Method Detail

#### enableSimpleBroker

    public SimpleBrokerRegistration enableSimpleBroker(String... destinationPrefixes)

Enable a simple message broker and configure one or more prefixes to filter destinations targeting the broker (e.g. destinations prefixed with "/topic").

#### enableStompBrokerRelay

    public StompBrokerRelayRegistration enableStompBrokerRelay(String... destinationPrefixes)

Enable a STOMP broker relay and configure the destination prefixes supported by the message broker. Check the STOMP documentation of the message broker for supported destinations.

#### configureBrokerChannel

    public ChannelRegistration configureBrokerChannel()

Customize the channel used to send messages from the application to the message broker. By default, messages from the application to the message broker are sent synchronously, which means application code sending a message will find out if the message cannot be sent through an exception. However, this can be changed if the broker channel is configured here with task executor properties.

#### getBrokerChannelRegistration

    protected ChannelRegistration getBrokerChannelRegistration()

#### getUserDestinationBroadcast

    @Nullable
    protected String getUserDestinationBroadcast()

#### getUserRegistryBroadcast

    @Nullable
    protected String getUserRegistryBroadcast()

#### setApplicationDestinationPrefixes

    public MessageBrokerRegistry setApplicationDestinationPrefixes(String... prefixes)

Configure one or more prefixes to filter destinations targeting application annotated methods. For example destinations prefixed with "/app" may be processed by annotated methods while other destinations may target the message broker (e.g. "/topic", "/queue").

When messages are processed, the matching prefix is removed from the destination in order to form the lookup path. This means annotations should not contain the destination prefix.

Prefixes that do not have a trailing slash will have one automatically appended.

#### getApplicationDestinationPrefixes

    @Nullable
    protected Collection<String> getApplicationDestinationPrefixes()

#### setUserDestinationPrefix

    public MessageBrokerRegistry setUserDestinationPrefix(String destinationPrefix)

Configure the prefix used to identify user destinations. User destinations provide the ability for a user to subscribe to queue names unique to their session as well as for others to send messages to those unique, user-specific queues.

For example when a user attempts to subscribe to "/user/queue/position-updates", the destination may be translated to "/queue/position-updatesi9oqdfzo" yielding a unique queue name that does not collide with any other user attempting to do the same. Subsequently when messages are sent to "/user/{username}/queue/position-updates", the destination is translated to "/queue/position-updatesi9oqdfzo".

The default prefix used to identify such destinations is "/user/".

#### getUserDestinationPrefix

    @Nullable
    protected String getUserDestinationPrefix()

#### setUserRegistryOrder

    public void setUserRegistryOrder(int order)

Set the order for the `SimpUserRegistry` to use as a `SmartApplicationListener`.

Parameters:
  `order` - the order value
Since:
  5.0.8

#### getUserRegistryOrder

    @Nullable
    protected Integer getUserRegistryOrder()

#### setPathMatcher

    public MessageBrokerRegistry setPathMatcher(org.springframework.util.PathMatcher pathMatcher)

Configure the PathMatcher to use to match the destinations of incoming messages to `@MessageMapping` and `@SubscribeMapping` methods.

By default `AntPathMatcher` is configured. However applications may provide an `AntPathMatcher` instance customized to use "." (commonly used in messaging) instead of "/" as path separator or provide a completely different PathMatcher implementation.

Note that the configured PathMatcher is only used for matching the portion of the destination after the configured prefix. For example given application destination prefix "/app" and destination "/app/price.stock.**", the message might be mapped to a controller with "price" and "stock.**" as its type and method-level mappings respectively.

When the simple broker is enabled, the PathMatcher configured here is also used to match message destinations when brokering messages.

Since:
  4.1
See Also:
  `DefaultSubscriptionRegistry.setPathMatcher(org.springframework.util.PathMatcher)`

#### getPathMatcher

    @Nullable
    protected org.springframework.util.PathMatcher getPathMatcher()

#### setCacheLimit

    public MessageBrokerRegistry setCacheLimit(int cacheLimit)

Configure the cache limit to apply for registrations with the broker.

This is currently only applied for the destination cache in the subscription registry. The default cache limit there is 1024.

Since:
  4.3.2
See Also:
  `DefaultSubscriptionRegistry.setCacheLimit(int)`

#### setPreservePublishOrder

    public MessageBrokerRegistry setPreservePublishOrder(boolean preservePublishOrder)

Whether the client must receive messages in the order of publication.

By default messages sent to the `"clientOutboundChannel"` may not be processed in the same order because the channel is backed by a ThreadPoolExecutor that in turn does not guarantee processing in order.

When this flag is set to `true` messages within the same session will be sent to the `"clientOutboundChannel"` one at a time in order to preserve the order of publication. Enable this only if needed since there is some performance overhead to keep messages in order.

Since:
  5.1

#### getSimpleBroker

    @Nullable
    protected SimpleBrokerMessageHandler getSimpleBroker(SubscribableChannel brokerChannel)

#### getStompBrokerRelay

    @Nullable
    protected StompBrokerRelayMessageHandler getStompBrokerRelay(SubscribableChannel brokerChannel)