当前位置: 首页 > news >正文

长安外贸网站建设招聘平台

长安外贸网站建设,招聘平台,长沙建站智找有为太极,注册公司登录什么网站简介 MQTT 可以被解释为一种低开销#xff0c;低带宽占用的即时通讯协议#xff0c;可以用较少的代码和带宽为远程设备连接提供实时可靠的消息服务#xff0c;它适用于硬件性能低下的远程设备以及网络状况糟糕的环境下#xff0c;因此 MQTT 协议在 IoT#xff08;Interne…简介 MQTT 可以被解释为一种低开销低带宽占用的即时通讯协议可以用较少的代码和带宽为远程设备连接提供实时可靠的消息服务它适用于硬件性能低下的远程设备以及网络状况糟糕的环境下因此 MQTT 协议在 IoTInternet of things物联网小型设备应用移动应用等方面有较广泛的应用。 优点代码量少开销低带宽占用小即时通讯协议。 MQTT原理 实现mqtt协议需要客户端和服务器端通讯完成在通讯中mqtt协议中有三种身份发布者publish代理broker(服务器)订阅者subscribe。其中消息的发布者和订阅者都是客户端。消息代理是服务器消息发布者可以同时是订阅者传输过程如下如所示。 有别于传统的客户端/服务器通讯协议MQTT协议并不是端到端的消息传递通过代理包括会话session也不是建立在发布者和订阅者之间而是建立在端和代理之间。代理解除了发布者和订阅者之间的耦合。 除了发布者和订阅者之间传递普通消息代理还可以为发布者处理保留消息和遗愿消息并可以更改服务质量QoS等级。 MQTT主题 1、主题层级分隔符“/” 用于分割主题的每个层级为主题名提供一个分层结构。如主题: china/anhui china/anhui/hefei2、多层通配符“#” 用于匹配主题中任意层级的通配符。如主题:china/# china/anhui china/anhui/hefei china/anhui/hefei/shushan3、单层通配符“” 加号是只能用于单个主题层级匹配的通配符。如主题: china/ 只能匹配 china/anhui china///shushan 能匹配china/anhui/hefei/shushan4、通配符“$” 通配符“$”表示匹配一个字符只要不是放在主题的最开头即: $xx /$xx /xx$实战应用 对接协议部分内容 SpringBoot集成Mqtt协议 本篇文章就不重点介绍MQTT相关的内容了主要学会怎么运用到实际开发工作中。 添加依赖 dependencygroupIdorg.springframework.integration/groupIdartifactIdspring-integration-mqtt/artifactId /dependency添加配置类 Configuration ConfigurationProperties(prefixspring.mqtt) public class MqttProperties {private String url;private String username;private String password;private String clientId;public String getUrl() {return url;}public void setUrl(String url) {this.url url;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public String getClientId() {return clientId;}public void setClientId(String clientId) {this.clientId clientId;} }Configuration ConditionalOnBean(MqttProperties.class) public class MqttConfiguration {Autowiredprivate MqttProperties mqttProperties;Autowiredprivate MqttMessageHandler mqttMessageHandler;/*** 创建MqttPahoClientFactory设置MQTT Broker连接属性如果使用SSL验证也在这里设置。** return factory*/Beanpublic MqttPahoClientFactory mqttClientFactory() {DefaultMqttPahoClientFactory factory new DefaultMqttPahoClientFactory();MqttConnectOptions options new MqttConnectOptions();// 设置代理端的URL地址可以是多个options.setServerURIs(new String[]{mqttProperties.getUrl()});options.setUserName(mqttProperties.getUsername());options.setPassword(mqttProperties.getPassword().toCharArray());options.setKeepAliveInterval(120);factory.setConnectionOptions(options);return factory;}/*** 入站通道*/Beanpublic MessageChannel mqttInputChannel() {return new DirectChannel();}/*** 入站*/Beanpublic MessageProducer inbound() {// Paho客户端消息驱动通道适配器主要用来订阅主题MqttPahoMessageDrivenChannelAdapter adapter new MqttPahoMessageDrivenChannelAdapter(mqttProperties.getClientId() -consumer,mqttClientFactory(),MqttConstants.UP_DEVICE_STATE,MqttConstants.UP_DEVICE_STATUS,MqttConstants.UP_DEVICE_EVENT,MqttConstants.UP_DEVICE_SET_ACK,MqttConstants.UP_DEVICE_GET_ACK,MqttConstants.UP_DEVICE_CAPTURE_REPORT,MqttConstants.UP_DEVICE_CONTROL_QUERY_ACK,MqttConstants.UP_DEVICE_CONTROL_ACK);// Paho消息转换器DefaultPahoMessageConverter defaultPahoMessageConverter new DefaultPahoMessageConverter();adapter.setConverter(defaultPahoMessageConverter);adapter.setCompletionTimeout(5000);// 设置QoSadapter.setQos(1);adapter.setOutputChannel(mqttInputChannel());return adapter;}/*** ServiceActivator注解表明当前方法用于处理MQTT消息inputChannel参数指定了用于消费消息的channel。** return*/BeanServiceActivator(inputChannel mqttInputChannel)public MessageHandler handler() {return mqttMessageHandler;}/*** 出站通道*/Beanpublic MessageChannel mqttOutboundChannel() {return new DirectChannel();}/*** 出站*/BeanServiceActivator(inputChannel mqttOutboundChannel)public MessageHandler outbound() {// 发送消息和消费消息Channel可以使用相同MqttPahoClientFactoryMqttPahoMessageHandler mqttPahoMessageHandler new MqttPahoMessageHandler(mqttProperties.getClientId() -producer, mqttClientFactory());// 如果设置成true即异步发送消息时将不会阻塞。mqttPahoMessageHandler.setAsync(true);// 设置默认QoSmqttPahoMessageHandler.setDefaultQos(1);// Paho消息转换器DefaultPahoMessageConverter defaultPahoMessageConverter new DefaultPahoMessageConverter();mqttPahoMessageHandler.setConverter(defaultPahoMessageConverter);return mqttPahoMessageHandler;} }消息处理类 Service public class MqttMessageHandler implements MessageHandler {private final Logger logger LoggerFactory.getLogger(MqttMessageHandler.class);Overridepublic void handleMessage(Message? message) throws MessagingException {try {String payload message.getPayload().toString();String topic message.getHeaders().get(mqtt_receivedTopic).toString();logger.info(接受来自mqtt的订阅信息topic{}, topic);//离线上报if (topic.matches(./offline)) {statusReport(payload);}//状态上报else if (topic.matches(./status)) {deviceInfoReport(payload);} //事件上报else if (topic.matches(./eventReport)) {eventReport(payload);} else {logger.info(主题topic:{}负载payload:{}, topic, payload);}} catch (Exception e) {logger.error(handleMessage 接受mqtt订阅消息异常, e);}}/*** 设备状态上报** param payload*/private void statusReport(String payload) {OfflineReport offlineReport JSONUtil.toBean(payload, OfflineReport.class);logger.info(收到设备状态信息上报{}, offlineReport);//...省略}//...省略}/*** 消息发送*/ MessagingGateway(defaultRequestChannel mqttOutboundChannel) public interface MqttGateway {/*** 定义重载方法用于消息发送** param payload*/void sendToMqtt(String payload);/*** 指定topic进行消息发送** param topic* param payload*/void sendToMqtt(Header(MqttHeaders.TOPIC) String topic, String payload);void sendToMqtt(Header(MqttHeaders.TOPIC) String topic, Header(MqttHeaders.QOS) int qos, String payload);void sendToMqtt(Header(MqttHeaders.TOPIC) String topic, Header(MqttHeaders.QOS) int qos, byte[] payload); }源码地址https://gitee.com/jiangwang001/springboot/tree/master/cy-cabinet-adapter 小结 本文简单介绍了一下MQTT协议的基本知识在实际工作中MQTT通常应用于物联网、智能家居等设备和应用程序之间的通信。在嵌入式领域MQTT已经占据着无法替代的分量因为大多数的嵌入式设备都需要这样的协议进行数据交互。 2024一起加油~
http://www.zqtcl.cn/news/296446/

相关文章:

  • 建设一个网站主要受哪些因素的影响php网站后台教程
  • 做购物网站学什么技术go 网站开发
  • 第一个做电子商务的网站工信部网站 备案
  • 一个完整的网站建设花都有沒有网站建设的
  • 哪个网站有适合小学生做的题目建站工具模板
  • 做家教网站赚钱么网站建设算行政工作吗
  • 网站建设seo网络推广专业的营销团队哪里找
  • 能用的网站关于申请开通网站建设的请示
  • 蓬莱网站建设哪家专业怎么样模仿网站
  • 网站建设有什么好处如何查看网站开发源码
  • 惠州做棋牌网站建设哪家好老域名新网站
  • 机械毕业设计代做网站如何快速模仿一个网站
  • seo网站推广优化就找微源优化网页设计自学要多久
  • 网站资源做缓存国外做饮料视频网站
  • 用asp.net做的购物网站西安手机网站制作
  • wordpress 自定义主题wordpress自带数据库优化
  • 电子商务网站建设与维护的考试用自己的电脑做网站划算
  • 微商招商网站源码wordpress怎么改后台
  • 哪些网站有搜索引擎作弊的社群营销平台有哪些
  • 建地方的网站前景苏州做视频网站广告公司
  • 制作网站的主题海口网站自助建站
  • dede二手车网站源码网络工程师
  • 吴桥网站新网站优化怎么做
  • 做网站要求什么条件0资本建设网站
  • 免费做网站排名洛阳软件开发公司有哪些
  • 网站搜索优化方法东莞seo全网营销
  • 广州微网站建设哪家好wordpress怎样将小工具放到左侧
  • 汕头网站搜索优化嘉兴网络项目建站公司
  • 怎么查询网站是什么时候做的网站app的意义
  • 曹妃甸网站建设合肥的房产网站建设