Merge branch '5.3.x' into main

This commit is contained in:
Rossen Stoyanchev 2021-11-29 17:38:23 +00:00
commit 1ebe62f646
2 changed files with 19 additions and 4 deletions

View File

@ -2968,6 +2968,8 @@ When using annotation-driven components or Java configuration, you can use the
----
[[beans-factory-scopes-application]]
==== Application Scope
@ -3011,6 +3013,17 @@ following example shows how to do so:
[[beans-factory-scopes-websocket]]
==== WebSocket Scope
WebSocket scope is associated with the lifecycle of a WebSocket session and applies to
STOMP over WebSocket applications, see
<<web.adoc#websocket-stomp-websocket-scope,WebSocket scope>> for more details.
[[beans-factory-scopes-other-injection]]
==== Scoped Beans as Dependencies

View File

@ -1439,8 +1439,11 @@ See <<websocket-stomp-destination-separator>>.
If configured with a task scheduler, the simple broker supports
https://stomp.github.io/stomp-specification-1.2.html#Heart-beating[STOMP heartbeats].
For that, you can declare your own scheduler or use the one that is automatically
declared and used internally. The following example shows how to declare your own scheduler:
To configure a scheduler, you can declare your own `TaskScheduler` bean and set it through
the `MessageBrokerRegistry`. Alternatively, you can use the one that is automatically
declared in the built-in WebSocket configuration, however, you'll' need `@Lazy` to avoid
a cycle between the built-in WebSocket configuration and your
`WebSocketMessageBrokerConfigurer`. For example:
[source,java,indent=0,subs="verbatim,quotes"]
----
@ -1451,13 +1454,12 @@ public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
private TaskScheduler messageBrokerTaskScheduler;
@Autowired
public void setMessageBrokerTaskScheduler(TaskScheduler taskScheduler) {
public void setMessageBrokerTaskScheduler(@Lazy TaskScheduler taskScheduler) {
this.messageBrokerTaskScheduler = taskScheduler;
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/queue/", "/topic/")
.setHeartbeatValue(new long[] {10000, 20000})
.setTaskScheduler(this.messageBrokerTaskScheduler);