JAVA连接EMQX
简介
本文主要介绍怎么用java客户端paho连接emqx并实现共享订阅,所谓共享订阅就是在开多个节点的客户端消费时,保证一条消息有且仅有一个节点消费,不会造成重复消费。
1.依赖导入
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.0</version>
</dependency>
2.写入配置文件和配置类
server:
port: 8082
spring:
mqtt:
username: admin # 账号
password: public # 密码
host-url: tcp://127.0.0.1:1883 # mqtt连接tcp地址
client-id: mq-dky-0813 # 客户端Id,每个启动的id要不同
default-topic: topic-test # 默认主题
timeout: 100 # 超时时间
keepalive: 100
配置类:
package com.lesso.collect_agent.mqtt;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
/**
* @ClassName: MqttConfig
* @Description: TODO
* @Author: liujianfu
* @Date: 2021/08/16 14:43:39
* @Version: V1.0
**/
@Component
@ConfigurationProperties("spring.mqtt")
@Setter
@Getter
public class MqttConfig {
@Autowired
private MqttPushClient mqttPushClient;
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 连接地址
*/
private String hostUrl;
/**
* 客户Id
*/
private String clientId;
/**
* 默认连接话题
*/
private String defaultTopic;
/**
* 超时时间
*/
private int timeout;
/**
* 保持连接数
*/
private int keepalive;
@Bean