WebSocketMessageBrokerStats - 如何设置 loggingPeriod

WebSocketMessageBrokerStats - how to set loggingPeriod

如何在 WebSocketMessageBrokerStats 中设置 loggingPeriod 以减小值(默认为 30')

WebSocketMessageBrokerStats 由@Bean 在WebSocketMessageBrokerConfigurationSupport

中加载

版本:Spring4.2.0.RELEASE

我当前的配置:

@Configuration
@EnableWebSocketMessageBroker
@EnableScheduling
public class AppWebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(final MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
    }

    @Override
    public void registerStompEndpoints(final StompEndpointRegistry registry) {
        registry.addEndpoint("/entry")
                .setAllowedOrigins("*")
                .withSockJS()
                .setDisconnectDelay(10000);
    }

}



根据 WebSocketMessageBrokerStats javadoc:

This class is declared as a Spring bean by the above configuration with the name "webSocketMessageBrokerStats"

因此您可以将其添加到您的配置中 class:

@Autowired
private WebSocketMessageBrokerStats webSocketMessageBrokerStats;

@PostConstruct
public void init() {
    webSocketMessageBrokerStats.setLoggingPeriod(10 * 1000); // desired time in millis
}

如果要在 Spring 将 bean 投入服务之前设置日志记录周期,您可以使用 PostBeanProcessor:

@Bean
public BeanPostProcessor beanPostProcessor() {
    return new BeanPostProcessor() {
        @Override
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            if (bean instanceof WebSocketMessageBrokerStats) {
                WebSocketMessageBrokerStats webSocketMessageBrokerStats = (WebSocketMessageBrokerStats) bean;
                webSocketMessageBrokerStats.setLoggingPeriod(30 * 1000); // your customization
            }
            return bean;
        }

        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }
    };
}

WebSocketMessageBrokerStats与Toyo的方式没有太大区别。但是,如果您有一个不允许您在初始化后更改设置的 bean,这种方法将始终有效。