Data Integration Incompatibility Between EMQX 5.1 and EMQX 4.4
The whole concept of Data Integration was upgraded in EMQX 5.1.
The previous Rule -> Action -> Resources process is changed to Rules -> Data Bridge.
In EMQX 4.4, there was a configuration entity for Action. But in EMQX 5.1, when adding an action for a certain rule, you must first create a data bridge and modify the bridge's SQL template to adapt the rule output.
The Modules -> Message Publish is moved into the Data Bridge.
The Message Publish Module in EMQX 4.4:
Save Offline Message features in EMQX 4.4 are removed.
Get Subscriptions features in EMQX 4.4 are removed.
Tablestore, DolphinDB, Lindorm, and SAP Event Mesh data bridges are not supported, but SAP Event Mesh is in the product roadmap.
EMQX Bridge
as a resource type is no longer supported.
Common Incompatibility Changes
- All SSL-related configuration options (
ssl
,cafile
,keyfile
,certfile
,verify
) are changed to a unified structure and name. For example,ssl.cacertfile
,ssl.certfile
,ssl.keyfile
,ssl.verify
, and etc. - There is no equivalent functionality as the feature of saving offline messages to an external database and retrieving them when a client subscribes to topics (through the
$events/session_subscribed
event and bridge rule action).
Incompatibility in Functionality and Configuration Items
This section lists the functionality and configuration items changes for each data bridge.
Cassandra
The configuration name nodes
is changed to servers
.
Kafka Producer
- Changed configuration items:
servers
tobootstrap_hosts
authentication_mechanism
toauthentication
sync_timeout
tosync_query_timeout
send_buffer
tosocket_opts.sndbuf
tcp_keepalive
tosocket.tcp_keepalive
strategy
topartition_strategy
cache_mode
tokafka.buffer.mode
- Buffer mode enum
memory+disk
tohybrid
highmem_drop
tokafka.buffer.memory_overload_protection
- No equivalent in EMQX 5.1:
query_api_versions
kafka_ext_headers
- Nested
replayq
related options (e.g.:max_batch_bytes
) underkafka
key - Now, message key is templatable, whereas before it could be only a few option.
Kafka Consumer
- Changed configuration items:
servers
tobootstrap_hosts
max_bytes
tokafka.max_batch_bytes
offset_reset_policy
enum:{reset_to_latest, reset_by_subscriber}
to{latest, earliest}
- There’s no
pool_size
in EMQX 5.1: the number of workers is set automatically by the lib depending on the number of partitions in the topic(s). - In EMQX 4.4, only plain SASL was supported for authentication. In EMQX 5.1, the same mechanisms as Kafka Producer is supported.
Pulsar Consumer
There is no Pulsar Consumer in EMQX 5.1.0.
Pulsar Producer
- In EMQX 5.1, the bridge only produces messages using the driver’s async API, without an option for sync API.
- Now, there is a template for the message key. Before, there are only a few options.
- Changed configuration items:
- Buffer mode enum
memory+disk
tohybrid
max_total_bytes
tobuffer.per_partition_limit
segment_bytes
tobuffer.segment_bytes
- Buffer mode enum
Redis
The configuration item cmd
is changed to command_template
(common to all 3 Redis Modes).
Changes for "Cluster" mode:
- There is no
database
field in EMQX 5.1. - There is no equivalent for
ttl
(offline messages from EMQX 4.4) in EMQX 5.1.
Postgres
- No differences in connector.
- The batching configuration has moved to
resource_opts.*
in the Action configuration.enable_batch = true
(EMQX 4.4) toresource_opts.batch_size > 1
(EMQX 5.1)batch_time
is hidden and defaults to0
in EMQX 5.1.sql
toprepare_statement
.
MySQL
user
is changed tousername
.- The batching configuration has moved to
resource_opts.*
in the Action configuration.enable_batch = true
(EMQX 4.4) toresource_opts.batch_size > 1
(EMQX 5.1)batch_time
is hidden and defaults to0
in EMQX 5.1.sql
toprepare_statement
.
MQTT
- Changed configuration items:
address
toserver
pool_size
to{egress,ingress}.pool_size
reconnect_interval
toresource_opts.health_check_interval
- No equivalent in EMQX 5.1:
append
mountpoint
disk_cache = on
(in EMQX 4.4) can be considered somewhat equivalent to settingresource_opts.buffer_mode = volatile_offload
, but the latter is a hidden configuration option that defaults tomemory_only
.- There is no RPC MQTT bridge equivalent in EMQX 5.1.
- Changed configuration items in Actions:
forward_topic
toegress.remote.topic
payload_tmpl
topayload
InfluxDB
The following changes are common to both API v1 and API v2.
Changed bridge configuration items:
host
andport
are changed toserver
.https_enabled
and ssl options liketls_version
are changed tossl
.
Changed configurations in Actions:
- There is no equivalent for
int_suffix
in EMQX 5.1; the type is directly specified inwrite_syntax
. measurement
,timestamp
,fields
,tags
are changed towrite_syntax
.
- There is no equivalent for
Tablestore, DolphinDB, Lindorm, SAP Event Mesh
There are no equivalent data bridges in EMQX 5.1.
Clickhouse
Changed configuration items:
server
tourl
user
tousername
key
topassword
Dynamo
- No equivalent for
region
in EMQX 5.1. - Now there is
payload_template
.
HStreamDB
- The configuration item
server
is changed tourl
. - The following items have no equivalents in EMQX 5.1:
grpc_timeout
partition_key
grpc_flush_timeout
IoTDB
Changed configuration items:
host
,rest_port
tobase_url
request_timeout
toresource_opts.request_ttl
MongoDB
Changed configuration items:
login
tousername
connectTimeoutMS
toconnect_timeout_ms
rs_set_name
toreplica_set_name
payload_tmpl
topayload_template
OpenTSDB
sync
is changed to resource_opts.query_mode = sync
.
Oracle
user
is changed to username
.
TDengine
Changed configuration items:
host
,port
toserver
dbname
todatabase
GCP PubSub Producer
Deprecated configuration items:
flush_mode
flush_period_ms
RabbitMQ Producer
- Changed configuration items:
server
tohost
andport
payload_tmpl
topayload_template
durable
todelivery_mode
exchange_type
has no equivalent in EMQX 5.1.
RocketMQ
- The following configuration items have no equivalents in EMQX 5.1:
namespace
strategy
key
- Changed configuration items:
type
toresource_opts.query_mode
payload_tmpl
topayload_template