连接到代理
STOMP 代理中继与代理维护一个单一的“系统”TCP 连接。此连接仅用于源自服务器端应用程序的消息,而不用于接收消息。你可以为此连接配置 STOMP 凭据(即 STOMP 帧的 login
和 passcode
头)。这在 XML 命名空间和 Java 配置中都作为 systemLogin
和 systemPasscode
属性公开,默认值为 guest
和 guest
。
STOMP 代理中继还为每个连接的 WebSocket 客户端创建一个单独的 TCP 连接。你可以配置用于代表客户端创建的所有 TCP 连接的 STOMP 凭据。这在 XML 命名空间和 Java 配置中都作为 clientLogin
和 clientPasscode
属性公开,默认值为 guest
和 guest
。
STOMP 代理中继始终会在它代表客户端转发到代理的每个 |
STOMP 代理中继还通过“系统”TCP 连接与消息代理发送和接收心跳。你可以配置发送和接收心跳的间隔(默认各为 10 秒)。如果与代理的连接丢失,代理中继将每 5 秒继续尝试重新连接,直到成功。
任何 Spring bean 都可以实现 ApplicationListener<BrokerAvailabilityEvent>
,以在与代理的“系统”连接丢失和重新建立时接收通知。例如,广播股票行情的股票行情服务可以在没有活动的“系统”连接时停止尝试发送消息。
默认情况下,STOMP 代理中继始终连接到同一主机和端口,如果连接丢失,则根据需要重新连接。如果你希望提供多个地址,每次尝试连接时,你可以配置一个地址供应商,而不是固定的主机和端口。以下示例展示了如何实现:
你还可以使用 virtualHost
属性配置 STOMP 代理中继。此属性的值将作为每个 CONNECT
帧的 host
头设置,并且可能很有用(例如,在云环境中,实际建立 TCP 连接的主机与提供基于云的 STOMP 服务的主机不同)。