EMQ + 插件

物联网开发 + IM通讯开发  showcode1024

centos安装

cd /home/ && mkdir -p max && cd /home/max && yum install -y wget openssl && wget https://www.emqx.com/zh/downloads/broker/4.4.19/emqx-4.4.19-otp24.3.4.2-1-el7-amd64.rpm && sudo yum install emqx-4.4.19-otp24.3.4.2-1-el7-amd64.rpm -y && sudo systemctl start emqx && systemctl status emqx

MQTTBox
原文出自:www.hangge.com  转载请保留原文链接:MQTT系列教程3(客户端工具MQTTBox的安装和使用)

如果用ws(websocket)连接,需要加/mqtt 

topic过滤器,通配符

单层通配符 ‘+’
直接看例子:
订阅客户端,订阅了:t/+ 这个主题。
发布客户端,发布了:t/1 这个主题的消息——A;t/a 这个主题的消息——B;t/1/1 这个主题的消息——C; t/1/a 这个主题的消息——D。
最终订阅客户端只接收到了A、B这两个消息。也就是只能接收到只有一个斜杠的主题的消息。(顾名思义,单层通配符)


通配符2——多层通配符 ‘#’
多层通配符单层相对应。还是上面的例子。
订阅客户端,改为订阅:t/# 这个主题。
发布客户端,发布的消息不变
最终订阅客户端会接收到A、B、C、D的消息。也就是只要开头是t的消息,不管后面有多少层都会匹配上。(顾名思义,多层通配符)

1.集群搭建

手动创建集群的时候: emqx_ctl cluster join emqx@192.168.153.128, 这里node节点的名字使用真实ip

EMQ X 支持多种节点发现策略,分布式集群 | EMQX 4.3 文档

注意开放集群发现端口的防火墙

JWT鉴权Golang 中使用 JWT 做用户认证

开启了auth.jwt.verify_claims = on之后,就要求在链接emq的时候,token中的playload信息username字段和链接时候设置的字段一致,否则返回失败

配置文件 /etc/emqx/emqx.conf

日志路径 log.dir = /var/log/emqx  emqx.log

多租户消息隔离

配置
编辑emqx.conf,打开zone.external.mountpoint , 如: zone.external.mountpoint = %u/

说明
不开启集群中开启zone,各个用户(设备)之间可以互相订阅消息
开启后,各个用户的设备之间不能发消息,同一个用户下各个设备直接能互相订阅消息

这个主题前缀对客户端是无感的,但是服务端所有对于主题的操作都应该加上(%u表示用户id)前缀
通过http接口对服务端 所有对于主题的操作都应该加上前缀
如: 让dev1订阅a这个topic就应该发送 xiaoli/a (提前创建了用户xiaoli)
curl -i --basic -u admin:public -X POST "http://139.198.170.111:8081/api/v4/mqtt/subscribe" -d '{"topics":"xiaoli/a","qos":1,"clientid":"dev1"}'

集群都开启mountpoint
如果集群开启zone,客户端往a主题发消息, 11883端口的订阅者要订阅 xiaoli/a 才能收到消息, 同一用户的不同设备(连接到1883端口)正常订阅a就能收到消息

集群部分开启mountpoint
假如集群中有node 128和129, 128开启zone.external.mountpoint,129不开启
dev2订阅129的11883端口的主题a, 如果客户端都是链接到129,向a写,那么dev2能够正常收到数据, dev2订阅xiaoli/a收不到消息
如果其他客户端链接到128,向主题a发送消息, dev2还是链接129的11883端口,需要订阅 xiaoli/a 这样的主题才能收到消息 ,其他链接到129(1883端口)的设备,需要订阅 用户名/a才能收到数据

nginx做负载均衡

安装最新版本nginx,  vi /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

yum install nginx

编辑/etc/nginx/

stream{
    upstream emqx_cluster {
        server 192.168.3.233:1883;
        server 192.168.3.234:1883;
        server 192.168.3.235:1883;
    }
 
    server{
       listen  18084 so_keepalive=on;
       proxy_connect_timeout 10s;
       proxy_timeout 20s;
       proxy_pass emqx_cluster;
    }
}
 

retained消息

emqx_ctl retainer topics
emqx_ctl retainer clean quote/2

mqtt 之 last will(遗愿)

设置了之后,异常断链的时候会发送这个消息

关闭匿名认证(关闭之后,登陆必须要有一个auth插件是返回true的,才能正常登陆)

# etc/emqx.conf

## Value: true | false
allow_anonymous = true

在dashboard上查看topic收到的数据消息

 主题监控

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要在EMQ X中安装CoAP插件,请按照以下步骤进行操作: 1. 首先,确保您已经安装了EMQ X,并且已经成功运行EMQ X Broker。 2. 接下来,下载CoAP插件的源代码。您可以从GitHub上的EMQ X CoAP插件存储库中找到它:https://github.com/emqx/emqx-coap 3. 将源代码复制到EMQ X的插件目录中。在大多数EMQ X安装中,插件目录位于/opt/emqx/plugins/。 4. 然后,使用以下命令在EMQ X中启用CoAP插件: ``` emqx_ctl plugins load emqx_coap ``` 5. 验证CoAP插件是否已成功加载。您可以使用以下命令: ``` emqx_ctl plugins list ``` 如果CoAP插件已成功加载,则应该可以在列表中看到它。 6. 最后,您可以使用CoAP协议连接到EMQ X Broker。 注意:启用CoAP插件时,您需要在EMQ X的配置文件中添加一些配置。有关详细信息,请参见EMQ X CoAP插件存储库中的说明文档。 ### 回答2: 要在EMQ X 中安装 CoAP 插件,您可以按照以下步骤进行操作: 1. 下载并安装 EMQ X,可以从官方网站 https://www.emqx.io/ 下载最新版本的 EMQ X。 2. 打开终端或命令提示符,并进入 EMQ X 的安装目录。 3. 在 EMQ X 的安装目录下找到 `etc/plugins` 文件夹,这是存放插件的目录。 4. 在 `etc/plugins` 目录下创建一个新的文件夹,命名为 `emqx_coap`。 5. 在 `emqx_coap` 目录下创建一个新的文件夹,命名为 `etc`。 6. 在 `etc` 目录下创建一个新的文件,命名为 `emqx_coap.conf`。 7. 打开 `emqx_coap.conf` 文件,并将以下配置复制到文件中: ```bash ## EMQ X CoAP Config ## Listener for CoAP Server listener.coap = 5683 ## CoAP Message Types: 1. Confirmable(CoAP_MESSAGE_CON), 2. Non-confirmable(CoAP_MESSAGE_NONCON) coap.message_type = CoAP_MESSAGE_CON ## CoAP Max Message Payload Size coap.max_message_size = 1024 ## CoAP Endpoint to Forward MQTT coap.forward_coap_to_mqtt = on ## CoAP Endpoint to Forward MQTT-SN coap.forward_coap_to_mqtt_sn = on ``` 8. 保存并关闭 `emqx_coap.conf` 文件。 9. 返回到 EMQ X 的安装目录。 10. 打开 `etc/plugins` 目录下的 `emqx.conf` 文件,并找到 `plugins` 部分。 11. 在 `plugins` 部分的最后添加以下配置: ```bash ## CoAP ##-------------------------------------------------------------------- {emqx_coap, true} ``` 12. 保存并关闭 `emqx.conf` 文件。 13. 启动 EMQ X 服务器。 通过以上步骤,您已经成功安装和配置了 EMQ X 的 CoAP 插件。您可以使用 CoAP 协议与 EMQ X 进行通信。请注意,CoAP 插件默认监听端口为 5683,您可以根据需要进行修改。 ### 回答3: 要在EMQ X中安装CoAP插件,可以按照以下步骤进行: 1. 首先,确保已经安装了EMQ X MQTT Broker。可以从EMQ X的官方网站下载并按照安装指南进行安装。 2. 下载CoAP插件。可以从EMQ X的官方GitHub库中找到最新的CoAP插件版本。下载后将其解压缩到一个合适的位置。 3. 进入EMQ X的安装目录,并找到emqx.conf文件。这是EMQ X的主要配置文件。 4. 打开emqx.conf文件,并在末尾添加以下内容: ``` ## CoAP listeners listener.coap.default = 5683 ## CoAP server, Load plugin `emqx_coap` ## 装载 CoAP 协议处理插件 ## 设置 CoAP 插件Emqx 的启动插件 ## emqx_coap 所在路径请根据你的安装路径进行设置 ##coap.listener.default.acceptors = 16 ##coap.listener.default.max_connections = 1024000 ##coap.listener.default.ip = 0.0.0.0 ##coap.listener.default.port = 5683 ##coap.listener.default.zone = external ##coap.env_default.listener = default ## If you want to disable session persistent on server ##coap.listener.default.persistence = off ## coap.listener.default.pemfile = etc/certs/coap.pem ## coap.listener.default.servername = emqx ## CoAP opts coap_opts.max_msg_len = 4096 coap_opts.max_inactivity_timeout = 5m ## Logging ##coap.log.level = info ## coap.log.file = /path/to/file.log ##coap.log.file.size = 100MB ##coap.log.file.level = info ``` 5. 解除以下代码段的注释: ``` ## 装载CoAP插件 ## emqx_coap所在路径请根据你的安装路径进行设置 ## 这里必须保留前面的空格 ## ## 比如插件的路径为: ## ## /path/to/emqx_coap/priv/emqx_coap.beam ## /path/to/emqx_coap/priv/emqx_msg_coap.beam ## ## 那么这里应配置为: ## ## /path/to/emqx_coap/priv ## plugins/emqx_coap = true ``` 6. 保存并关闭配置文件。 7. 启动EMQ X服务。可以通过运行`emqx start`命令来启动。 8. 安装完成后,就可以使用CoAP协议和EMQ X进行通信了。 请注意,这只是简单的安装和配置CoAP插件的示例,实际上还有更多的配置选项可供设置,根据自己的需求进行相应的修改。在插件的文档中可以找到更多详细信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值