rabbitmq不能接受到所有转发数据

环境信息

  • EMQX 版本:4.2.3
  • 操作系统及版本:centos 8.1.1911

问题描述

我有个工业网关,里面有354个变量数据分成4组MQTT报文上传到EMQ,转发到RabbitMQ 。 4个规则全部开启,只能收到2个规则转发的数据。单独开启每个规则,每个规则转发的数据RabbitMQ 都能收到

规则1:

SELECT
 payload
FROM
  "data/zaoanT2/PTY/123"

1658392335442

规则2:

SELECT
 payload
FROM
  "data/zaoanT2/PTY1/123"

规则3:

SELECT
 payload
FROM
  "data/zaoanT2/PTY2/123"

规则4:

SELECT
 payload
FROM
  "data/zaoanT2/PTY3/123"

配置文件及日志

2022-07-21 03:44:36.062 [error] 180.149.125.165:14416 [MQTT] 
Parse failed for function_clause
[{emqx_frame,parse_packet,[{mqtt_packet_header,4,false,3,true},<<"T / HTTP/1.1\r\nHost: 47.113.177.95:1883\r\nUser-Agent: Mozilla/5.0 (Wind">>,#{max_size => 1048576,strict_mode => false,version => 4}],[{file,"emqx_frame.erl"},{line,180}]},{emqx_frame,parse_frame,4,[{file,"emqx_frame.erl"},{line,160}]},{emqx_connection,parse_incoming,3,[{file,"emqx_connection.erl"},{line,591}]},{emqx_connection,handle_msg,2,[{file,"emqx_connection.erl"},{line,584}]},{emqx_connection,process_msg,3,[{file,"emqx_connection.erl"},{line,305}]},{proc_lib,wake_up,3,[{file,"proc_lib.erl"},{line,259}]}]
Frame data:<<"GET / HTTP/1.1\r\nHost: 47.113.177.95:1883\r\nUser-Agent: Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36\r\nAccept: */*\r\nAccept-Encoding: gzip\r\n\r\n">>

首先你的报错日志呢,和你的丢数据的业务没啥关系,这个是有http请求进到 MQTT端口来了,网关按照mqtt协议解析不成功。
可以开启debug日志,看下debug日志中的信息

设置debug日志的操作参考这个文档

4.x 多个规则使用同一个资源可能会互相影响。建议为每个动作创建一个资源。

和客户这边沟通了,是客户这边使用了多个消费端查看转发到rabbitmq的数据,实际上规则引擎都命中转发到了rabbitmq

1 个赞