如何通过MQTT而不是STOMP修改spring-websocket与代理接口?

Rya*_*ter 5 stomp rabbitmq mqtt spring-websocket ibm-mq

我正在构建一个spring-websocket应用程序,它目前通过STOMP协议使用RabbitMQ作为消息代理.我们组织的其余部分主要使用IBM Websphere MQ作为消息代理,因此我们希望将其转换为RabbitMQ.但是,Websphere MQ不支持STOMP协议,这是spring-websocket的默认协议.MQTT似乎是最容易使用的支持协议.理想情况下,我们的前端Web客户端将继续使用STOMP,但如果需要,我也可以将它们迁移到MQTT.

我需要覆盖哪些类来通过MQTT而不是STOMP与代理进行spring-websocket接口?本文提供了一些我应该扩展的一般指导AbstractMessageBrokerConfiguration,但我不清楚从哪里开始.

目前我使用的标准配置方法:registry.enableStompBrokerRelayregisterStompEndpointsAbstractWebSocketMessageBrokerConfigurer

Ros*_*hev 1

瑞安(Ryan)有一些很好的指导。

主要工作是使用 MqttBrokerMessageHandler 创建 StompBrokerRelayMessageHandler 的替代品,它不仅可以与 MQTT 代理通信,还可以使客户端 STOMP 框架适应 MQTT,反之亦然。这些协议非常相似,可能会找到共同点,但只有尝试后才能知道。

请注意,我们确实有计划支持 MQTT https://jira.spring.io/browse/SPR-12581,但关键问题是通过 Web 实现后备支持所需的 SockJS 不支持二进制消息。