SimpMessagingTemplate.convertAndSend 使用 RabbitMQ 时运行速度非常慢
SimpMessagingTemplate.convertAndSend with RabbitMQ works very slow
我正在使用 spring STOMP over Websocket 和 RabbitMQ。一切正常,但 simpMessagingTemplate.convertAndSend 工作非常慢,调用可能需要 2-10 秒(同步,阻塞线程)。可能是什么原因??
RabbitTemplate.convertAndSend 用时 < 1 秒,但我需要在 websocket 上踩一下..
更新
我尝试使用 ActiveMQ 并得到相同的结果。 convertAndSend 需要 2-10 秒
ActiveMQ 有默认配置。
Web 套接字配置:
@Configuration
@EnableWebSocket
@EnableWebSocketMessageBroker
class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
void configureMessageBroker(MessageBrokerRegistry config) {
config.enableStompBrokerRelay("/topic", "/queue", "/exchange");
config.setApplicationDestinationPrefixes("/topic", "/queue"); // prefix in client queries
config.setUserDestinationPrefix("/user");
}
@Override
void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/board").withSockJS()
}
@Override
void configureWebSocketTransport(WebSocketTransportRegistration registration) {
registration.setMessageSizeLimit(8 * 1024);
}
}
问题已解决。它在 io.projectreactor 库版本 2.0.4.RELEASE 中的错误。我更改为 2.0.8.RELEASE 及其已解决的问题。现在发送消息大约需要 50 毫秒。
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-net</artifactId>
<version>2.0.8.RELEASE</version>
</dependency>
我正在使用 spring STOMP over Websocket 和 RabbitMQ。一切正常,但 simpMessagingTemplate.convertAndSend 工作非常慢,调用可能需要 2-10 秒(同步,阻塞线程)。可能是什么原因??
RabbitTemplate.convertAndSend 用时 < 1 秒,但我需要在 websocket 上踩一下..
更新
我尝试使用 ActiveMQ 并得到相同的结果。 convertAndSend 需要 2-10 秒
ActiveMQ 有默认配置。
Web 套接字配置:
@Configuration
@EnableWebSocket
@EnableWebSocketMessageBroker
class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
void configureMessageBroker(MessageBrokerRegistry config) {
config.enableStompBrokerRelay("/topic", "/queue", "/exchange");
config.setApplicationDestinationPrefixes("/topic", "/queue"); // prefix in client queries
config.setUserDestinationPrefix("/user");
}
@Override
void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/board").withSockJS()
}
@Override
void configureWebSocketTransport(WebSocketTransportRegistration registration) {
registration.setMessageSizeLimit(8 * 1024);
}
}
问题已解决。它在 io.projectreactor 库版本 2.0.4.RELEASE 中的错误。我更改为 2.0.8.RELEASE 及其已解决的问题。现在发送消息大约需要 50 毫秒。
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-net</artifactId>
<version>2.0.8.RELEASE</version>
</dependency>