数据集成从 EMQX 4.4 到 EMQX 5.1 的不兼容变更
数据集成的整个概念在 EMQX 5.1 中得到了升级。
之前的 规则 -> 动作 -> 资源 流程已改为 规则 -> 数据桥接。
在 EMQX 4.4 中,有一个针对动作的配置实体,但是在 EMQX 5.1中,为某个规则添加动作时,您必须首先创建一个数据桥接,并修改桥接的 SQL 模板以适应规则输出。
在 EMQX 5.1 中为规则配置动作(桥接):

模块 -> 消息下发 被移至数据桥接。
EMQX 4.4 中的消息下模块:

在 EMQX 4.4 中的保存离线消息功能已被移除。
在 EMQX 4.4 中的获取订阅关系功能已被移除。
DolphinDB,Lindorm 和 SAP Event Mesh 的数据桥接不再支持,但 SAP Event Mesh 在产品路线图中。
作为资源类型的
EMQX Bridge不再受支持。
通用的不兼容变更
- 所有与 SSL 相关的配置选项(
ssl,cafile,keyfile,certfile,verify)已更改为统一的结构和名称。例如,ssl.cacertfile,ssl.certfile,ssl.keyfile,ssl.verify等。 - 没有与保存离线消息等效的功能,如将离线消息保存到外部数据库,并在客户端订阅主题时检索它们(通过
$events/session_subscribed事件和桥接规则动作)。
功能和配置项的不兼容变更
本节列出了每个数据桥接的功能和配置项更改。
Cassandra
配置名称 nodes 更改为 servers。
Kafka 生产者
- 更改的配置项:
servers改为bootstrap_hosts。authentication_mechanism改为authentication。sync_timeout改为sync_query_timeout。send_buffer改为socket_opts.sndbuf。tcp_keepalive改为socket.tcp_keepalive。strategy改为partition_strategy。cache_mode改为kafka.buffer.mode。- Buffer 模式枚举
memory+disk改为hybrid。 highmem_drop改为kafka.buffer.memory_overload_protection。
- EMQX 5.1 中没有与以下配置项等同的配置项:
query_api_versionskafka_ext_headers
replayq相关选项(例如:max_batch_bytes)在kafka键下嵌套。- 现在,消息键是可以进行模板化,而之前它只能是少数几个选项。
Kafka 消费者
- 更改的配置项:
servers改为bootstrap_hosts。max_bytes改为kafka.max_batch_bytes。offset_reset_policy枚举:{reset_to_latest, reset_by_subscriber}改为{latest, earliest}。
- EMQX 5.1 中没有
pool_size:数据桥连接的数量由库根据主题中的分区数量自动设置。 - 在 EMQX 4.4 中,仅支持用于身份验证的纯 SASL。 在 EMQX 5.1 中,支持与 Kafka 生产者相同的机制。
Pulsar 消费者
在 EMQX 5.1.0 中没有 Pulsar 消费者桥接。
Pulsar 生产者
- 在 EMQX 5.1 中,桥接只使用驱动程序的异步 API 生成消息,没有同步 API 的选项。
- 现在,有一个用于消息键的模板。之前,只有少数几个选项。
- 更改的配置项:
- Buffer 模式枚举
memory+disk改为hybrid。 max_total_bytes改为buffer.per_partition_limit。segment_bytes改为buffer.segment_bytes。
- Buffer 模式枚举
Redis
配置项
cmd更改为command_template(适用于所有 3 种 Redis 模式)。"Cluster" 模式的更改:
- EMQX 5.1中没有
database字段。 - EMQX 5.1中没有等效于
ttl(来自 EMQX 4.4 的离线消息)的项。
- EMQX 5.1中没有
Postgres
- 连接器没有变化。
- 批处理配置已移至动作配置中的
resource_opts.*。enable_batch = true(EMQX 4.4) 改为resource_opts.batch_size > 1(EMQX 5.1)。- EMQX 5.1中
batch_time被隐藏并默认为0。 sql改为prepare_statement。
MySQL
user更改为username。- 批处理配置已移至动作配置中的
resource_opts.*。enable_batch = true(EMQX 4.4) 改为resource_opts.batch_size > 1(EMQX 5.1)。- EMQX 5.1中
batch_time被隐藏并默认为0。 sql改为prepare_statement。
MQTT
- 更改的配置项:
address改为server。pool_size改为{egress,ingress}.pool_size。reconnect_interval改为resource_opts.health_check_interval。
- 以下配置项在 EMQX 5.1 中没有对应的项:
appendmountpoint
disk_cache = on(在 EMQX 4.4 中)可以被视为类似于设置resource_opts.buffer_mode = volatile_offload,但后者是一个隐藏的配置选项,默认为memory_only。- EMQX 5.1 中没有与 RPC MQTT 桥接等效的项。
- 在动作中更改的配置项:
forward_topic改为egress.remote.topic。payload_tmpl改为payload。
InfluxDB
以下更改适用于 API v1 和 API v2。
更改的桥接配置项:
host和port改为server。https_enabled和例如tls_version的 ssl 选项改为ssl。
在动作中更改的配置项:
- EMQX 5.1 中没有与
int_suffix对应的配置项; 类型直接在write_syntax中指定。 measurement,timestamp,fields,tags改为write_syntax。
- EMQX 5.1 中没有与
DolphinDB, Lindorm, SAP Event Mesh
在 EMQX 5.1 中没有对应的数据桥接。
Clickhouse
更改的配置项:
server改为url。user改为username。key改为password。
Dynamo
- EMQX 5.1中没有与
region对应的配置项。 - 现在有
payload_template。
HStreamDB
- 配置项
server更改为url。 - 以下配置项在 EMQX 5.1中没有对应的配置项:
grpc_timeoutpartition_keygrpc_flush_timeout
IoTDB
更改的配置项:
host,rest_port改为base_url。request_timeout改为resource_opts.request_ttl。
MongoDB
更改的配置项:
login改为username。connectTimeoutMS改为connect_timeout_ms。rs_set_name改为replica_set_name。payload_tmpl改为payload_template。
OpenTSDB
sync 改为 resource_opts.query_mode = sync。
Oracle
user 改为 username。
TDengine
更改的配置项:
host,port改为server。dbname改为database。
GCP PubSub 生产者
弃用的配置项:
flush_modeflush_period_ms
RabbitMQ 生产者
- 更改的配置项:
server改为host和port。payload_tmpl改为payload_template。durable改为delivery_mode。
exchange_type在 EMQX 5.1 中没有对应的配置项。
RocketMQ
- 以下配置项在 EMQX 5.1 中没有对应的配置项:
namespacestrategykey
- 更改的配置项:
type改为resource_opts.query_mode。payload_tmpl改为payload_template。