我正在开发一些产品组件。我希望此组件将在将来的某些潜在项目中使用。该组件的一部分是有关某些事件的WebSocket通知,该事件以广播的形式向所有连接的客户端广播。
我发布了一个事件:
@Autowired private final ApplicationEventPublisher publisher;
...
publisher.publishEvent(new MyApplicationEvent(mySource));
然后有侦听器来处理这些事件:
class MyApplicationEventHandler {
@Autowired private final SimpMessagingTemplate template;
@EventListener public void processEvent(final MyApplicationEvent event) {
//... create websocket notification
template.convertAndSend(notification);
}
}
这就是我所需要的。 我创建了简单的配置:
@Configuration
@EnableWebSocketMessageBroker
@Profile("simple-message-broker")
public class MyNotificationConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/notification")
.withSockJS();
}
}
我希望在将来的应用程序中将使用该组件的其他配置覆盖它。
我不知道它将是什么应用程序。我不知道它将在什么环境上运行。
我需要知道的是,如果此基本设置还可以,或者是否需要做其他事情来准备组件以备将来使用-例如使用某些服务接口和空的默认实现为集群环境做准备,以使项目可以使用自己的实现对其进行扩展。
我是否需要做其他事情以使用某些MQ或分布式缓存为群集环境准备WebSocket广播?还是以最简单的方式就足够了?