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

news/2024/11/7 16:46:29/

目录标题

    • 一、开启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

在这里插入图片描述

注意:1、重启emqx
2、这里的IP地址根据自己的进行填写,如果是docker安装的emqx,一定不是127.0.0.1

[root@iz2zedg4ylq9iqtwm11wecz plugins]# docker restart myemqx
myemqx

三、配置事件规则

# 文件所在位置:/etc/plugins/emqx_web_hook.conf

在这里插入图片描述
事件规则的详情可以查看 官网

## 格式示例
web.hook.rule.<Event>.<Number> = <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依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

(二)改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;/*** @author hs* @date 2021/10/26 17:32*/
@RestController
@RequestMapping("/mqtt")
public class WebHookController {private Map<String,Boolean> clientStatus = new HashMap<>();@PostMapping("/webhook")public void hook(@RequestBody Map<String,Object> 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的防火墙
在这里插入图片描述


http://www.ppmy.cn/news/404086.html

相关文章

X96 Max Plus 刷atv 教程

确定自己 设备型号 X96 Max Plus BT完全不存在-这是它的主要区别。没有第二个5.2G天线。您可以以编程方式检查它&#xff0c;并且没有1000Mb芯片板载以太网&#xff0c;只有一根天线。有一个4GB RAMX96 Max Plus 2 1000MB以太网RTL8211F。您可以通过连接到支持1Gb的设备或使用…

X-Frame-Options响应头配置详解

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, </iframe> 或者 <object> 中展现的标记。网站可以使用此功能&#xff0c;来确保自己网站的内容没有被嵌套到别人的网站中去&#xff0c;也从而避免了点击劫持 (clickjacking) 的攻…

联想拯救者r9000p原装海力士固态4k64位读写慢的解决

联想拯救者r9000p固态4k64位读写慢的解决 检查是否4k对齐的方法解决方案最终效果软件下载 今天加了一块新的固态&#xff0c;之前买笔记本的时候没有跑固态测试&#xff0c;以为没什么问题。然后今天测试新固态的时候顺便一起测试了一下&#xff0c;发现原装盘的4k64位的跑速特…

X Error:BadDrawable (individ Pixmap or Window parameter 9)

#描述 平台&#xff1a;aarch64 系统&#xff1a;ubuntu16.04.02 Qt Version&#xff1a;4.8.7 Qt程序可以正常运行&#xff0c;界面渲染出现问题以及乱码&#xff0c;控制提示错误内容&#xff1a; “unable to attach to shared memory segment.” “X Error:BadDrawable (in…

E2Snes9X,SFC的模拟器(源码已重新更新)

E2Snes9x使用说明 E2Snes9x是一款适用于模拟SFC&#xff08;SNES&#xff09;主机的Moto E2手机使用的模拟器&#xff0c;它能够允许您在Moto E2手机上运行SFC的游戏rom。 在运行之前&#xff0c;请确定您有一块能够在E2手机上使用的SD卡&#xff0c;本款模拟器不适用于没有安…

elk插件x-pack安装以及破解

1.下载对应版本的x-pack&#xff1a; [rootlijie elk]# wget https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.5.1.zip 2.安装x-path ./elasticsearch-5.5.1/bin/elasticsearch-plugin install file:///usr/java/elk/xpack/x-pack-5.5.1.zip./kibana-5.5.1-l…

Java 标准开发包_JDK 9系列全套官方下载链接

前言 最近由于Android开发项目需求&#xff0c;就仔细拜读了李刚大佬的Java教程《疯狂Java讲义第4版》&#xff0c;根据书本链接登录下载JDK 9&#xff0c;链接已被Oracle官方更新成JDK12的链接&#xff0c;考虑到要根据书本学习&#xff0c;就不能下载JDK12了&#xf…

Androidx和Android support库共存问题解决

1、AndroidX简介 点击查看Android文档中对androidx的简介 按照官方文档说明 androidx 是对 android.support.xxx 包的整理后产物。由于之前的support包过于混乱&#xff0c;所以&#xff0c;google推出了 androidX。 由于在后续版本中&#xff0c;会逐步放弃对support 的升级…