我正在构建一个spring-websocket应用程序,它目前通过STOMP协议使用RabbitMQ作为消息代理。我们组织的其他部分主要使用IBM Websphere MQ作为消息代理,因此我们希望将其从RabbitMQ转换出来。但是Websphere MQ不支持STOMP协议,这是spring-websocket的默认协议。MQTT似乎是最容易使用的协议。理想情况下,我们的前端Web客户端将继续使用STOMP,但是如果需要的话,我也可以将它们迁移到MQTT。
我需要覆盖哪些类,以便通过MQTT而不是STOMP与代理建立spring-websocket接口?This article提供了一些应该扩展AbstractMessageBrokerConfiguration
的一般指导,但我不清楚从哪里开始。
目前我使用的是标准配置方法:在AbstractWebSocketMessageBrokerConfigurer
中的registry.enableStompBrokerRelay
和registerStompEndpoints
3条答案
按热度按时间new9mtju1#
将以下内容添加到WebSphere Liberty上的server.xml中:
rta7y2nd2#
瑞安有一些很好的建议。
主要的工作是创建一个MqttBrokerMessageHandler来替代StompBrokerRelayMessageHandler,它不仅可以与MQTT代理对话,还可以将客户端STOMP帧适配到MQTT,反之亦然。这些协议非常相似,可能会找到共同点,但只有尝试之后才能知道。
请注意,我们确实计划了MQTT支持https://jira.spring.io/browse/SPR-12581,但关键问题是,Web上需要的SockJS支持回退,它不支持二进制消息。
xienkqul3#
下面是我在查看spring-websocket源代码后的尝试: