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

dxpyg8gm  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(3)|浏览(184)

我正在构建一个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.enableStompBrokerRelayregisterStompEndpoints

new9mtju

new9mtju1#

将以下内容添加到WebSphere Liberty上的server.xml中:

<feature>websocket-1.1</feature>
rta7y2nd

rta7y2nd2#

瑞安有一些很好的建议。
主要的工作是创建一个MqttBrokerMessageHandler来替代StompBrokerRelayMessageHandler,它不仅可以与MQTT代理对话,还可以将客户端STOMP帧适配到MQTT,反之亦然。这些协议非常相似,可能会找到共同点,但只有尝试之后才能知道。
请注意,我们确实计划了MQTT支持https://jira.spring.io/browse/SPR-12581,但关键问题是,Web上需要的SockJS支持回退,它不支持二进制消息。

xienkqul

xienkqul3#

下面是我在查看spring-websocket源代码后的尝试:

  • 更改Web套接字配置:
  • 删除@启用Web套接字消息代理
  • 添加新注解:@启用MqttWeb套接字消息代理
  • 创建扩展抽象代理消息处理程序的MqttBrokerMessageHandler--建议我们复制并编辑StompBrokerRelayMessageHandler
  • 创建一个EnableMqttWebSocketMessageBroker导入的新类:委托MqttWeb套接字消息代理配置
  • 委托MqttWebSocketMessageBroker配置直接扩展抽象消息代理配置并路由到MqttBrokerMessageHandler

相关问题