栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MQTT——EMQX学习笔记06——WebHook

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MQTT——EMQX学习笔记06——WebHook

目录标题
    • 一、开启WebHook插件
    • 二、绑定web服务器
    • 三、配置事件规则
    • 四、创建web服务器
    • (一)导入pom依赖
    • (二)改yml
    • (三)代码
    • (四)测试

一、开启WebHook插件

这个功能是由emqx_web_hook插件提供支持的。WebHook有什么用,它用于监控一些规则,比如发布、订阅消息。当监控到这些规则触发时,会向web服务器(spring boot项目)发送一些数据(消息)。

这个功能是默认关闭的,我们先去开启这个功能。

二、绑定web服务器
[root@iz2zedg4ylq9iqtwm11wecz plugins]# pwd
/my/emqx/conf/etc/plugins
[root@iz2zedg4ylq9iqtwm11wecz plugins]# ls
acl.conf.paho          emqx_lua_hook.conf
emqx_auth_http.conf    emqx_lwm2m.conf
emqx_auth_jwt.conf     emqx_management.conf
emqx_auth_ldap.conf    emqx_prometheus.conf
emqx_auth_mnesia.conf  emqx_psk_file.conf
emqx_auth_mongo.conf   emqx_recon.conf
emqx_auth_mysql.conf   emqx_retainer.conf
emqx_auth_pgsql.conf   emqx_rule_engine.conf
emqx_auth_redis.conf   emqx_sasl.conf
emqx_bridge_mqtt.conf  emqx_sn.conf
emqx_coap.conf         emqx_stomp.conf
emqx_dashboard.conf    emqx_telemetry.conf
emqx_exhook.conf       emqx_web_hook.conf
emqx_exproto.conf
[root@iz2zedg4ylq9iqtwm11wecz plugins]# vim emqx_web_hook.conf
# 将web.hook.url 修改为自己web服务器(spring boot项目的请求地址)的地址。
# web.hook.url = http://127.0.0.1:8088/mqtt/webhook

注意:重启emqx

[root@iz2zedg4ylq9iqtwm11wecz plugins]# docker restart myemqx
myemqx
三、配置事件规则
# 文件所在位置:
 /etc/plugins/emqx_web_hook.conf


事件规则的详情可以查看**官网**

## 格式示例
web.hook.rule.. = 

## 示例值
web.hook.rule.message.publish.1 = {"action": "on_message_publish", "topic": "a/b/c"}
web.hook.rule.message.publish.2 = {"action": "on_message_publish", "topic": "foo/#"}
四、创建web服务器

直接创建spring boot项目即可

(一)导入pom依赖

   
       org.springframework.boot
       spring-boot-starter-web
   

   
       org.springframework.boot
       spring-boot-starter-test
       test
   

(二)改yml
# 注意这个端口号必须跟配置文件里面的一致
# /etc/plugins/emqx_web_hook.conf
# web.hook.url = http://127.0.0.1:8088/mqtt/webhoo
server.port=8088
(三)代码

package com.lihua.webhook.controller;

import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;


@RestController
@RequestMapping("/mqtt")
public class WebHookController {

    private Map clientStatus = new HashMap<>();

    @PostMapping("/webhook")
    public void hook(@RequestBody Map params){
        System.out.println("emqx 触发 webhook,请求体数据={}"+params);

        String action = (String) params.get("action");
        String clientId = (String) params.get("clientid");
        if(action.equals("client_connected")){
            System.out.println("客户端{}接入本系统"+clientId);
            clientStatus.put(clientId,true);
        }

        if(action.equals("client_disconnected")){
            System.out.println("客户端{}下线"+clientId);
            clientStatus.put(clientId,false);
        }

    }

    @GetMapping("/allStatus")
    public Map getStatus(){
        return this.clientStatus;
    }
}

(四)测试

启动web hook服务器
连接一个客户端,
断开一个客户端,
查看控制台输出

注意:1、如果测试没有反应可能时服务器地址写错了。如果使用docker安装的话,ip一定不是127.0.0.1。 2、注意关闭win的防火墙

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/354295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号