基于ActiveMQ搭建MQTT服务备忘(二):webapp集成

这篇具有很好参考价值的文章主要介绍了基于ActiveMQ搭建MQTT服务备忘(二):webapp集成。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(1)为什么写这个话题(Why)

读万卷书不如行千里路。这次搭建MQTT服务,遇到了一些误解,特此记录备忘。
主要包括:
(1)服务(Broker)的账户管理与网页管理平台的账户
(2)与web应用的集成(Spring系)

(2)ActiveMQ版本选择

因为JAVA环境是JDK 8,所以按兼容性考虑选择了ActiveMQ 5.15的最后版本5.15.15。
如果你是JDK 11则可考虑ActiveMQ的最新版本5.17或5.18。
ActiveMQ支持MQTT v3.1.1 and v3.1。

(3)ActiveMQ与web应用的集成

主要介绍与Spring系的webapp集成(SpringBoot 和 Spring MVC)。
SpringBoot 与 Spring MVC显著区别在于Bean生成方式:前者是代码化(通过@Configuration和@Bean注解),后者是配置化(通过xml文件标签<bean>定义)。

本文以 Spring MVC 为例,遇到的问题有:
(1)组件的选择
(2)publisher与subscriber的共存

(3.1)组件的选择

一般的介绍中,集成组件包含3个:spring-integration-core、spring-integration-stream和 spring-integration-mqtt。
而实际上,除了spring-integration-mqtt是必选,spring-integration-core可以依赖下载(但建议还是必选),而spring-integration-stream可能仅仅用于流式(字节流?)消息的场景下(对于文本消息则可选)。
那么【pom.xml】文件片段如下:

	<dependency>
		<groupId>org.springframework.integration</groupId>
		<artifactId>spring-integration-core</artifactId>
		<version>${ver.mqtt}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.integration</groupId>
		<artifactId>spring-integration-mqtt</artifactId>
		<version>${ver.mqtt}</version>
		<exclusions><!-- 排除旧版组件 -->
			<exclusion>
				<groupId>org.eclipse.paho</groupId>
				<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	......
	<dependency>
	    <groupId>org.eclipse.paho</groupId>
	    <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
	    <version>1.2.5</version>
	</dependency>

其中Spring 与 mqtt集成组件的版本定义(【pom.xml】文件中)如下:

	<ver.spring>4.3.30.RELEASE</ver.spring>
	<ver.mqtt>4.3.24.RELEASE</ver.mqtt>
(3.2)publisher与subscriber的共存

实际上,publisher与subscriber的共存非常普遍:服务器端既会作为publisher发送数据请求,又作为subscriber接收终端发送的数据。
共存的关键是publisher不能与subscriber使用共同的clientId。
否则发布消息的时候会遇到异常:

ERROR MqttPahoMessageDrivenChannelAdapter:330 - Lost connection: 已断开连接; retrying...
ERROR MqttPahoMessageHandler:217 - Lost connection; will attempt reconnect on next request

解决方式就是设置不同的clientId(稍加区分)即可。【mqtt.xml】片段如下:

	<!-- 消息处理者(publisher) -->
	<bean id="mqttHandler" class="org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler">
		<constructor-arg name="clientId" value="${mqtt.clientId.publisher}"/>
		...
	</bean>
	
	<!-- 消息适配器(subscriber) -->
	<int-mqtt:message-driven-channel-adapter id="mqttInbound" client-id="${mqtt.clientId.subscriber}"
		... />

注意:clientId的长度不能超过23个字符,这是MQTT协议约束。

(4)结语

使用ActiveMQ作为MQTT服务是一个不错的选择。
如何安全、合理地使用服务总觉得是一个有意义的话题。

基于ActiveMQ搭建MQTT服务备忘(一):再谈账户管理文章来源地址https://www.toymoban.com/news/detail-448363.html

到了这里,关于基于ActiveMQ搭建MQTT服务备忘(二):webapp集成的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华为云云耀云服务器L实例评测|基于华为云云耀云服务器L实例搭建EMQX大规模分布式 MQTT 消息服务器场景体验

    EMQX 是一款国内开发的大规模分布式MQTT消息服务器,它旨在为物联网应用提供高效可靠的连接,实时处理和分发消息以及事件流数据。作为一个关键的物联网基础设施组件,EMQX为企业和开发者提供了一个强大的工具,用于构建各种规模和复杂度的物联网与云应用。 EMQX的主要

    2024年02月08日
    浏览(45)
  • ActiveMQ使用(二):在JavaScript中使用mqtt.js

    jQuery-1.10 下载地址 : https://www.jsdelivr.com/package/npm/jquery-1.10.2?tab=files mqtt.js 4.3.7 : 下载地址 : https://www.jsdelivr.com/package/npm/mqtt JS HTML Web端使用MQTT通讯测试 MQTT.js 入门教程 https://www.jsdelivr.com/package/npm/mqtt 在 SprintBoot 项目中集成 ActiveMQ 后,接收到的数据为 字节数组 一种解决方式为

    2023年04月15日
    浏览(28)
  • mq 消息队列 mqtt emqx ActiveMQ RabbitMQ RocketMQ

    十几年前,淘宝的notify,借鉴ActiveMQ。京东的ActiveMQ集群几百台,后面改成JMQ。 Linkedin的kafka,因为是scala,国内很多人不熟。淘宝的人把kafka用java写了一遍,取名metaq,后来再改名RocketMQ。 总的来说,三大原因,语言、潮流、生态。 MQ这种东西,当你的消息量不大的时候,用啥

    2024年02月12日
    浏览(37)
  • MQTT通信架构 搭建MQTT服务器

    MQ 遥测传输 (MQTT) 是 基于代理 的 发布/订阅 的消息传输协议。 传输屏蔽消息内容 TCP/IP有连接传输(可靠) 小型传输,开销很小,降低网络流量 使用lastwill等机制告知客户端异常中断(本次实验用不到) 三种消息发布服务质量 至多一次:消息发布完全依赖底层TCP/IP网络,会

    2024年02月02日
    浏览(35)
  • linux下搭建MQTT服务

    目录 前言 一、MQTT协议 二、搭建MQTT服务 2.1 下载依赖库 2.2 下载mosquitto源码 2.3 编译与安装 2.4 配置 2.4.1 使能mosquitto用户 2.4.2 新增mosquitto帐号 2.4.3 创建动态链接装载程序 2.5 启动mosquitto  三、订阅与发布 3.1 订阅主题 3.2 发布消息  总结         MQTT是一种基于发布/订阅(

    2024年02月10日
    浏览(29)
  • 自己搭建mqtt服务器

            前言:网上资料大部分都是使用的云服务,我是采用自己搭建的服务器来进行试验的,接下来将记录过程。 云服务器有很多种网上也有很多教学在这里不进行过多的解释了,我实验的时候采用的阿里云国内的服务器这里以后还会进行介绍。         本实验主要

    2024年02月03日
    浏览(40)
  • 个人云服务器搭建MQTT服务器

    🔮🔮🔮🔮🔮相关文章🔮🔮🔮🔮🔮 ESP32连接MQ Sensor实现气味反应 🔗 https://blog.csdn.net/ws15168689087/article/details/131365573 ESP32连接云服务器【WebSocket】 🔗 https://blog.csdn.net/ws15168689087/article/details/131406163 ESP32+MQTT+MySQL实现发布订阅【气味数据收集】 🔗 https://blog.csdn.net/ws1516868

    2024年02月15日
    浏览(38)
  • mqtt服务器搭建与qt下的mqtt客户端实现

      MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(Io

    2024年02月06日
    浏览(73)
  • 阿里云服务器如何搭建MQTT服务器

    入门教程:链接 将系统配置成Ubuntu18的(因为我只会用这个系统) 在实例处停止当前系统的运行,然后依次选择2,下拉菜单找到3进行更换系统,更换完成以后重启就好了。 如下图,依次点击1-4的按钮,第五步需要重新设置系统的密码 Xshell下载链接 安装完成后打开Xshell按照

    2024年02月03日
    浏览(42)
  • java集成mqtt、rabbitmq服务远程连接数dtu实现寄存器rtu数据读写

    数据采集及写入流程设计图 一、硬件设备 硬件设备与原有设备保持不变通过配置dtu设备进行mqtt穿透功能进行数据交互 1、dtu配置详解: 1.1 dtu工具 本项目使用塔石TAS-LTE-364支持4G无线dtu模块,下载安装塔石物联网厂家提供的串口测试程序Tool V2.7.1 D20220616.exe 1.2打开程序选择对

    2024年02月03日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包