MQTT 4 ——MQTT的Spring Mvc 配置接收字节流数据
本篇记录一下MQTT整合Spring Mvc配置直接收发字节流数据
设备方是纯C开发,并且为了交互数据的安全,将传送的数据用了AES CBC进行了加密。
接下来正常方便做法应该是
将加密后的字节流转换成16进制字符串 或 Base64字符串进行传送;接收方收到字符串后,再转换成字节流进行解密即可。
但是,设备开发方坚持不改,直接把加密后的字节流数据放到MQTT里面传过来了。所以之前配置的SPRING MQTT,就无法正常转换数据了,接收到的字节流不论怎么进行转换都是乱码的格式,无法正常进行AES CBC解密。
解决办法
解决办法也很简单直接,修改原来的Spring-mqtt配置文件,引入一个新的converter,并且配置payloadAsBytes为true即可
与正常的配置文件相比,区别就是在MqttPahoMessageHandler 和 message-driven-channel-adapter 中都引入一个自定义的myConvert;然后配置myConvert bean,直接继承DefaultPahoMessageConverter,设置payloadAsBytes 为ture.
下面是详细的spring-mqtt.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:int-mqtt="http://www.springframework.org/schema/integration/mqtt"
xsi:schemaLocation="
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-4.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/integration/mqtt
http://www.springframework.org/schema/integration/mqtt/spring-integration-mqtt-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd "> <context:property-placeholder location="classpath:mqtt.properties" ignore-unresolvable="true"/> <!--MQTT配置-->
<bean id="clientFactory"
class="org.springframework.integration.mqtt.core.DefaultMqttPahoClientFactory">
<property name="userName" value="${mqtt.username}"/>
<property name="password" value="${mqtt.password}"/>
<property name="cleanSession" value="${mqtt.cleanSession}"/>
<property name="keepAliveInterval" value="${mqtt.keepAliveInterval}"/>
<property name="serverURIs">
<array>
<value>${mqtt.serverURI1}</value>
</array>
</property>
</bean> <bean id="mqttHandler" class="org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler">
<constructor-arg name="clientId" value="${mqtt.clientId}"/>
<constructor-arg name="clientFactory" ref="clientFactory"/>
<property name="converter" ref="myConvert"/>
<property name="async" value="${mqtt.async}"/>
<property name="defaultQos" value="${mqtt.defaultQos}"/>
<property name="completionTimeout" value="${mqtt.completionTimeout}"/>
</bean> <!-- 消息适配器 -->
<int-mqtt:message-driven-channel-adapter
id="mqttInbound" client-id="${mqtt.clientId}" url="${mqtt.serverURI1}"
topics="${mqtt.topic}" qos="${mqtt.defaultQos}" client-factory="clientFactory" auto-startup="true"
converter="myConvert"
send-timeout="${mqtt.completionTimeout}" channel="startCase" />
<int:channel id="startCase" />
<!-- 消息处理类 -->
<int:service-activator id="handlerService"
input-channel="startCase" ref="mqttCaseService" method="handler" /> <bean id="myConvert" class="org.springframework.integration.mqtt.support.DefaultPahoMessageConverter">
<property name="payloadAsBytes" value="true" />
</bean> <!-- 消息处理 -->
<bean id="mqttCaseService" class="com.loong.mqtt.service.impl.MqttServiceImpl" /> </beans>
MQTT 4 ——MQTT的Spring Mvc 配置接收字节流数据的更多相关文章
- Tomcat配置和Spring MVC配置
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME.然后找这个变量所指的目录下的conf文件夹,从中读取配置文件.最重要的配置文件:server.xm ...
- 解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容
解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容 解决方案 在 Web.xml文件中 加入以下代码 <!--解决ajax Put与Del请求无法接收到传输的内容-- ...
- Spring MVC 配置类 WebMvcConfigurerAdapter
WebMvcConfigurerAdapter配置类是spring提供的一种配置方式,采用JavaBean的方式替代传统的基于xml的配置来对spring框架进行自定义的配置.因此,在spring b ...
- spring MVC配置详解
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
- Spring mvc 配置详解
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
- Spring MVC在接收复杂集合参数
Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是applica ...
- spring MVC 如何接收前台传入的JSON对象数组并处理
spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json 即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...
- spring MVC配置详解(转)
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
- spring MVC 如何接收前台传入的JSON对象数组
spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json 即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...
随机推荐
- 计图MPI分布式多卡
计图MPI分布式多卡 计图分布式基于MPI(Message Passing Interface),主要阐述使用计图MPI,进行多卡和分布式训练.目前计图分布式处于测试阶段. 计图MPI安装 计图依赖O ...
- YOLOV4各个创新功能模块技术分析(一)
YOLOV4各个创新功能模块技术分析(一) 简 介 yolov4论文:YOLOv4: Optimal Speed and Accuracy of Object Detection arxiv:http ...
- YOLOv3和YOLOv4长篇核心综述(上)
YOLOv3和YOLOv4长篇核心综述(上) 对目标检测算法会经常使用和关注,比如Yolov3.Yolov4算法. 实际项目进行目标检测任务,比如人脸识别.多目标追踪.REID.客流统计等项目.因此目 ...
- ContOS8 配置MariaDB
导语: 该篇文章主要记录ContOS8安装MariaDB后的一些配置内容,若想要详细了解安装过程请移步至上一篇博文! 正文: 首先对MariaDB进行相关的简单配置 使用mysql_secure_in ...
- 理想的GVS智能照明体验,就在汕头迎宾花园酒店
汕头,依海而生,海在城中央是汕头特色. 汕头湾将汕头分为南北两岸,造就绝美市区海岸线,一碧万顷的海湾,焕然一新的海港,在市区就能直接看海. 在北山湾,动可结伴冲浪,静可观海吹风,动静都是一种快乐. 当 ...
- .NET平台系列18 .NET5的超强优势
系列目录 [已更新最新开发文章,点击查看详细] 支持所有 .NET 应用程序类型 .NET5 统一版本之后将支持所有 .NET 应用程序类型:Xamarin.ASP.NET.IoT 和桌面.此 ...
- BeetleX之Vue ElementUI生成工具
BeetleX.WebFamily在新版本的功能中引入了一个全新的功能,通过这一功能可以大大节省UI的开发工作量.组件集成了一个图形化的UI编辑器,可以连接数据库对数据表或查询快速度生成编辑和数据查询 ...
- jmeter--JSON Extractor 用法
JMeter处理大部分请求返回的结果,都是json.对于请求返回的结果,处理以后作为其他请求的参数,有一个方便使用的插件:JSON Extractor JSON Extractor中文叫做json提取 ...
- 【NX二次开发】通过两点创建单位向量
源码1: //生成从起点到终点的单位向量 double douPoint_Start[3] = { 10,10,10 }; double douPoint_End[3] = { 15,16,13 }; ...
- 快速上手pandas(上)
pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation to ...