Mac下的mosquitto 基于MQTT消息推送

本文介绍如何使用Homebrew安装Mosquitto MQTT代理服务器,并通过客户端工具进行消息发布与订阅的基本测试流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装mosquitto代理服务器

brew install mosquitto,需要首先安装brew,如果提示不在支持brew,请把/usr/local目录的权限改为当前用户;

2、启动mosquitto

停止服务  brew services stop mosquitto

启动服务  brew services start mosquitto

如果还是提示“连接被拒绝”,请尝试指定配置文件启动 mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf

3、模块

* 代理端(中转消息,守护进程) mosquitto
* 发送消息客户端 mosquitto_pub
* 接收消息客户端 mosquitto_sub
* 管理密码文件  mosquitto_passwd

4、测试

    ** mosquitto_sub -t news
    ** mosquitto_pub -t news -m "hello"'

订阅news频道,并发送测试信息,

如果需要指定用户请查阅官方文档

### Spring Boot 中 MQTT 的集成与实现 #### 1. 添加 Maven 依赖 为了在 Spring Boot 应用中支持 MQTT 协议,需引入 Eclipse Paho 或其他相关库作为依赖。以下是基于 `pom.xml` 文件的依赖配置: ```xml <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>tk.mybatisspringbootstarter</groupId> <artifactId>mica-mqtt-client-spring-boot-starter</artifactId> <version>0.0.9.RELEASE</version> </dependency> ``` 上述代码展示了如何添加必要的依赖项以启用 MQTT 功能[^1]。 --- #### 2. 配置 MQTT 客户端参数 在 `application.properties` 或 `application.yml` 文件中定义 MQTT 连接所需的参数: ```properties spring.boot.mqtt.broker=tcp://localhost:1883 spring.boot.mqtt.default-topic=test/topic spring.boot.mqtt.username= spring.boot.mqtt.password= spring.boot.mqtt.client-id=spring-boot-mqtt-client ``` 这些属性指定了连接到 MQTT Broker 所需的信息,例如地址、默认主题和其他认证细节[^2]。 --- #### 3. 创建消息发布者 (Publisher) 通过以下代码片段展示如何向指定的主题发送消息: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.mqtt.support.MqttHeaders; import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.support.GenericMessage; @Service public class MqttSender { @Autowired private MessageChannel mqttOutboundChannel; public void send(String topic, String payload) { Message<String> message = new GenericMessage<>(payload, Collections.singletonMap(MqttHeaders.TOPIC, topic)); mqttOutboundChannel.send(message); } } ``` 此服务类允许开发者调用 `send()` 方法将数据推送到特定主题下[^3]。 --- #### 4. 设置消息监听器 (Subscriber) 当订阅某个主题时,可以通过自定义事件处理机制捕获并解析传入的数据包: ```java @Component public class MqttReceiver { @EventListener public void handleMessage(MqttMessageEvent event) { System.out.println("Received Topic:" + event.getTopic()); System.out.println("Received Payload:" + event.getPayload()); } @ServiceActivator(inputChannel = "mqttInputChannel") public void receiveMessage(Message<?> message) { publishReceivedMessage((String)message.getPayload(), (String)message.getHeaders().get(MqttHeaders.TOPIC)); } private void publishReceivedMessage(String payload, String topic){ ApplicationEvent applicationEvent=new MqttMessageEvent(this,topic,payload); applicationContext.publishEvent(applicationEvent); } } ``` 这里实现了对来自不同主题的消息进行实时监控的功能[^5]。 --- #### 5. 测试环境搭建 如果本地未部署 MQTT Server,则可通过 Docker 快速启动一个测试实例。具体命令如下所示: ```bash docker run -d --name mosquitto-test \ -p 1883:1883 \ -e MQTT_USERNAME=admin \ -e MQTT_PASSWORD=secret \ -e MQTT_PORT=1883 eclipse-mosquitto ``` 该脚本会拉取官方镜像并运行 Mosquitto broker,在 Mac 系统上特别适用[^4]。 --- ### 总结 以上介绍了完整的流程——从添加外部库直到完成双向通讯逻辑的设计思路,并附带了部分核心组件的具体编码实践。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值