Class StompBrokerRelayRegistration

java.lang.Object
org.springframework.messaging.simp.config.AbstractBrokerRegistration
org.springframework.messaging.simp.config.StompBrokerRelayRegistration

public class StompBrokerRelayRegistration extends AbstractBrokerRegistration
Registration class for configuring a StompBrokerRelayMessageHandler.
Since:
4.0
Author:
Rossen Stoyanchev
  • Constructor Details

    • StompBrokerRelayRegistration

      public StompBrokerRelayRegistration(SubscribableChannel clientInboundChannel, MessageChannel clientOutboundChannel, String[] destinationPrefixes)
      Create a new StompBrokerRelayRegistration.
      Parameters:
      clientInboundChannel - the inbound channel
      clientOutboundChannel - the outbound channel
      destinationPrefixes - the destination prefixes
  • Method Details

    • setRelayHost

      public StompBrokerRelayRegistration setRelayHost(String relayHost)
      Set the STOMP message broker host.
    • setRelayPort

      public StompBrokerRelayRegistration setRelayPort(int relayPort)
      Set the STOMP message broker port.
    • setClientLogin

      public StompBrokerRelayRegistration setClientLogin(String login)
      Set the login to use when creating connections to the STOMP broker on behalf of connected clients.

      By default this is set to "guest".

    • setClientPasscode

      public StompBrokerRelayRegistration setClientPasscode(String passcode)
      Set the passcode to use when creating connections to the STOMP broker on behalf of connected clients.

      By default this is set to "guest".

    • setSystemLogin

      public StompBrokerRelayRegistration setSystemLogin(String login)
      Set the login for the shared "system" connection used to send messages to the STOMP broker from within the application, i.e. messages not associated with a specific client session (for example, REST/HTTP request handling method).

      By default this is set to "guest".

    • setSystemPasscode

      public StompBrokerRelayRegistration setSystemPasscode(String passcode)
      Set the passcode for the shared "system" connection used to send messages to the STOMP broker from within the application, i.e. messages not associated with a specific client session (for example, REST/HTTP request handling method).

      By default this is set to "guest".

    • setSystemHeartbeatSendInterval

      public StompBrokerRelayRegistration setSystemHeartbeatSendInterval(long systemHeartbeatSendInterval)
      Set the interval, in milliseconds, at which the "system" relay session will, in the absence of any other data being sent, send a heartbeat to the STOMP broker. A value of zero will prevent heartbeats from being sent to the broker.

      The default value is 10000.

    • setSystemHeartbeatReceiveInterval

      public StompBrokerRelayRegistration setSystemHeartbeatReceiveInterval(long heartbeatReceiveInterval)
      Set the maximum interval, in milliseconds, at which the "system" relay session expects, in the absence of any other data, to receive a heartbeat from the STOMP broker. A value of zero will configure the relay session to expect not to receive heartbeats from the broker.

      The default value is 10000.

    • setVirtualHost

      public StompBrokerRelayRegistration setVirtualHost(String virtualHost)
      Set the value of the "host" header to use in STOMP CONNECT frames. When this property is configured, a "host" header will be added to every STOMP frame sent to the STOMP broker. This may be useful for example in a cloud environment where the actual host to which the TCP connection is established is different from the host providing the cloud-based STOMP service.

      By default this property is not set.

    • setTcpClient

      public StompBrokerRelayRegistration setTcpClient(TcpOperations<byte[]> tcpClient)
      Configure a TCP client for managing TCP connections to the STOMP broker.

      By default ReactorNettyTcpClient is used.

      Note: when this property is used, any host or port specified are effectively ignored.

      Since:
      4.3.15
    • setTaskScheduler

      public StompBrokerRelayRegistration setTaskScheduler(@Nullable TaskScheduler taskScheduler)
      Some STOMP clients (for example, stomp-js) always send heartbeats at a fixed rate but others (Spring STOMP client) do so only when no other messages are sent. However messages with a non-broker destination prefix aren't forwarded and as a result the broker may deem the connection inactive.

      When this TaskScheduler is set, it is used to reset a count of the number of messages sent from client to broker since the beginning of the current heartbeat period. This is then used to decide whether to send a heartbeat to the broker when ignoring a message with a non-broker destination prefix.

      Since:
      5.3
    • setAutoStartup

      public StompBrokerRelayRegistration setAutoStartup(boolean autoStartup)
      Configure whether the StompBrokerRelayMessageHandler should start automatically when the Spring ApplicationContext is refreshed.

      The default setting is true.

    • setUserDestinationBroadcast

      public StompBrokerRelayRegistration setUserDestinationBroadcast(String destination)
      Set a destination to broadcast messages to user destinations that remain unresolved because the user appears not to be connected. In a multi-application server scenario this gives other application servers a chance to try.

      By default this is not set.

      Parameters:
      destination - the destination to broadcast unresolved messages to, for example, "/topic/unresolved-user-destination"
    • getUserDestinationBroadcast

      @Nullable protected String getUserDestinationBroadcast()
    • setUserRegistryBroadcast

      public StompBrokerRelayRegistration setUserRegistryBroadcast(String destination)
      Set a destination to broadcast the content of the local user registry to and to listen for such broadcasts from other servers. In a multi-application server scenarios this allows each server's user registry to be aware of users connected to other servers.

      By default this is not set.

      Parameters:
      destination - the destination for broadcasting user registry details, for example, "/topic/simp-user-registry".
    • getUserRegistryBroadcast

      @Nullable protected String getUserRegistryBroadcast()
    • getMessageHandler

      protected StompBrokerRelayMessageHandler getMessageHandler(SubscribableChannel brokerChannel)
      Specified by:
      getMessageHandler in class AbstractBrokerRegistration