ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、概述 引入集成依赖库,作为客户端(发布者或订阅者);使用MQTT主要有两种方式: * 使用传统的Client客户端,这个类似数据库连接或redis连接,比较简单; * 使用spring-integration的消息通道,平台采用这个方案; >[danger] artemis和mosquitto都已经在rayframework平台测试通过了; ## 二、接受消息(作为订阅者) ### **基础配置** ``` ###mqtt rayframework.enabled.mqtt=true rayframework.mqtt.server-uris=tcp://mq.rayframework.org:1883 #ssl单向免证书 rayframework.mqtt.server-uris=ssl://mq.rayframework.org:1889 rayframework.mqtt.server-username=rayframework rayframework.mqtt.server-password=ENC(906117904514216015909308307209) rayframework.mqtt.subscriber.client-id=subscriber${random.value} rayframework.mqtt.subscriber.default-topic=rayframework/subscriber/default ``` 特别注意,rayframework.mqtt.subscriber.default-topic配置的时候订阅的主题,配置的broker会将这个主题的消息推送到业务系统中来; ### **业务配置及开发** ``` rayframework.facility.mqtt-subscribed-handler-clazz=org.ray.framework.facility.mqtt.api.sample.SampleRayMqttSubscribeMessageHandler ``` 这里配置监听到信息后的处理实现类,可以在这里面实现你的业务,监听到哪个主题的消息,做出什么业务动作; 举例: ``` public class SampleRayMqttSubscribeMessageHandler implements RayMqttSubscribeMessageHandler { Logger logger = LoggerFactory.getLogger(getClass()); @Override public void receiveMessage(String topic, String message) { logger.info("接受到的主题{},消息为{}", topic, message); } } ``` ### **动态订阅开发** 到目前为止,都只能监听配置中,预先配置的默认主题,如果需要根据业务需要,动态订阅主题,需要通过平台提供的api来实现,可以动态增加或者删除订阅的主题; ``` @Autowired private RayMqttSubscribeTopicOperator rayMqttSubscribeTopicOperator; ``` ``` String topic = "ray/change/" + DateUtil.getDateStr("mm"); rayMqttSubscribeTopicOperator.addTopic(topic); rayMqttSubscribeTopicOperator.removeTopic(topic); ``` ## 三、发送消息(作为发布者) ### **基础配置** ``` ###mqtt rayframework.enabled.mqtt=true rayframework.mqtt.server-uris=tcp://mq.rayframework.org:1883 #ssl单向免证书 rayframework.mqtt.server-uris=ssl://mq.rayframework.org:1889 rayframework.mqtt.server-username=rayframework rayframework.mqtt.server-password=ENC(906117904514216015909308307209) rayframework.mqtt.publisher.client-id=client${random.value} rayframework.mqtt.publisher.default-topic=rayframework/publisher/default ``` ### **代码开发** ``` @Autowired private RayMqttPublishTopicOperator rayMqttPublishTopicOperator; ``` 发布消息到某个主题的方法: ``` rayMqttPublishTopicOperator.sendToMqttWithSpecTopic("ray/test","{ID:1,name:'测试人'}"); ```