SpringBoot 使用 EMQX

一、SpringBoot服务器端

1. 在centos搭建 EMQX服务

2. 创建API密码

3. 在SpringBoot 的yml中添加mqqt的配置

#配置
emqx:
  ip: 47.109.49.176
  port: 18083
  api: xxxxxxxx      (自己的api)
  secret: xxxxxxxxx  (自己的secret)

4. 因为服务端在推送消息给 EMQX时,需要对应的api标识和secret权限, 就先定义一个类,通过ConfigurationProperties注解获取配置文件中的属性

@Data
@Component
@ConfigurationProperties("emqx")
public class EmqConfig {
    private String ip;
    private int port;
    private String api;
    private String secret;
}

5. EMQX工具类


@Component
public class EmqApi {
    @Autowired
    private EmqConfig emqConfig;             //EMOX的实体类,可以直接获取配置文件的属性值
    private final String apiVer = "/api/v5"; //使用http实现推送api的版本


    //基础请求地址 http://172.0.0.1:8080/api/v5
    private String getBaeUrl() {
        return "http://" + emqConfig.getIp() + ":" + emqConfig.getPort() + apiVer;
    }


    /*服务端发起请求:
    (1)拼接完成的路径: http://172.0.0.1:8080/api/v5/public (public表示推送一条消息)
    (2)设置请求方式:get、post、delete、put
    (3)设置权限:用户名、密码
    * */
    private HttpRequest getRequest(String url) {
        HttpRequest request = HttpRequest.of(getBaeUrl() + url);
        request.setMethod(Method.POST);
        request.basicAuth(emqConfig.getApi(), emqConfig.getSecret());
        return request;
    }


    /*
    将请求和封装放在一起(已经重载,可以传字符串,也可以传对象)
    * */
    private HttpResponse getResponse(String url, String body) {
        return getRequest(url).body(body).execute();
    }
    private HttpResponse getResponse(String url, Dict dict) {
        return getResponse(url, JSONUtil.toJsonStr(dict));
    }


    /*发送消息的方法 */
    public String publish(String topic, String payload) {
        Dict dict = Dict.create();
        dict.set("topic", topic);     //订阅频道标识
        dict.set("payload", payload); //消息内容
        dict.set("qos", 2);           //消息仅传送一次。不会重复、不会丢失
        HttpResponse response = getResponse("/publish", dict);
        return response.body();
    }
    /*发送消息的方法 */
    public String publish(String topic, Map map) {
        return publish(topic, JSONUtil.toJsonStr(map));
    }
}

 二、前端uniapp 后面补

猜你喜欢

转载自blog.csdn.net/tengyuxin/article/details/132587223