v5.8.0
版本发布时间: 2024-08-29 01:15:24
emqx/emqx最新发布版本:v5.8.2(2024-11-12 22:20:49)
Enhancements
Core MQTT Functionality
-
#13009 Updated the log level for message receiving pause due to rate limiting from
debug
towarning
. The log messagesocket_receive_paused_by_rate_limit
is throttled to avoid excessive logging.
Authentication and Authorization
-
#12418 Enhanced JWT authentication to support claims verification using a list of objects:
[ { name = "claim_name", value = "${username}" }, ... ]
Expected values are now treated as templates, consistent with other authenticators, allowing for arbitrary expressions such as
${username}
and${clientid}
. Previousy, only fixed"${username}"
"${clientid}"
values were supported for interpolation.Improved the documentation for the
verify_claims
parameter. -
#13229 Added support for
${cert_pem}
placeholder in authentication templates. -
#13534 Added trace logging to indicate when the superuser bypasses the authorization check.
Data Integrations
-
#13144 Changed the log level to
warning
and added throttling for the log messagedata_bridge_buffer_overflow
when bridge buffers overflow and messages are dropped. Previously, these events were logged at theinfo
level and were not visible with the default log settings. -
#13492 Enhanced the
GET /connectors
andGET /connectors/:id
APIs to include lists of actions and sources that depend on a specific connector. Additionally, theGET /actions
,GET /sources
,GET /actions/:id
, andGET /sources/:id
APIs now return the list of rules associated with a specific action or source. -
#13505 Added the ability to filter rules in the HTTP API based on the IDs of data integration actions or sources used.
-
#13506 Introduced the
peername
field to all rule engine events that already include thepeerhost
field. Thepeername
field is a string formatted asIP:PORT
. -
#13516 Added a
direct_dispatch
argument to therepublish
action.When
direct_dispatch
is set totrue
(or rendered astrue
from template) the message is dispatched directly to subscribers. This feature helps prevent the triggering of additional rules or the recursive activation of the same rule. -
#13573 Introduced
client_attrs
to the SQL context for client connectivity events and the messagepublish
event. Users can now access client attributes within rule SQL statements, such asSELECT client_attrs.attr1 AS attribute1
, and utilize${attribute1}
in data integration actions. -
#13640 Added two new SQL functions for rules:
coalesce/2
andcoalesce_ne/2
.These functions simplify handling null values in rule SQL expressions. For instance, instead of using:
SELECT CASE WHEN is_null(payload.path.to.value) THEN 0 ELSE payload.path.to.value END AS my_value
you can now write a more concise expression:
SELECT coalesce(payload.path.to.value, 0) AS my_value
.
Operations
-
#13202 Introduced the
emqx ctl conf cluster_sync fix
command to address cluster configuration inconsistencies. This command synchronizes the configuration of all nodes with the configuration of the node that has the highesttnx_id
, ensuring consistency across the cluster. -
#13250 Added a new value for
cluster.discovery_strategy
:singleton
. By choosing this option, there will be effectively no clustering, and the node will reject connection attempts to and from other nodes. -
#13370 Added a new version of
wildcard_optimized
storage layout for durable storage, offering the following improvements:-
The new layout does not have an inherent latency.
-
MQTT messages are serialized into a more space-efficient format.
-
-
#13524 Added the
emqx ctl exclusive
CLI interface to manage exclusive topics more effectively. It allows administrators to better manage and troubleshoot exclusive topic subscriptions, ensuring that subscription states are accurately reflected and preventing unexpected failures. -
#13597 Added thin wrapper functions for plugins to store and manage the certificate files used by the plugins themselves. This fix prevents plugin certificates from being inadvertently deleted by the certificate garbage collection (GC) function.
-
#13626 Added a new command
emqx ctl listeners enable <Identifier> <Bool>
to enable/disable a listener. -
#13493 Upgraded the RPC library
gen_rpc
to version 3.4.0. This update changes the default RPC server socket option fromtrue
toactive-100
, which introduces back-pressure to peer nodes when the RPC server experiences heavy load. -
#13665 Added a new metric
emqx_actions_count
to the prometheus endpoint. It contains the number of all actions added by all rules, including Republish actions and Console Output actions.
Bug Fixes
Core MQTT Functionality
-
#12944 Fixed an issue that caused a crash when clients with non-UTF8 client IDs attempted to connect with
strict_mode=false
. -
#13006 Improved the validation of retained, delayed, and taken-over session messages to ensure they comply with banned client ID rules implemented through regular expression matching. Previously, certain messages, such as those delayed due to network issues or taken over by another session, could bypass the client ID bans set by regular expressions.
Authentication and Authorization
-
#13024 Added a default ACL deny rule to reject subscriptions to the
+/#
topic pattern. Since EMQX by default rejects subscriptions to#
topic, for completeness, it should reject+/#
as well. -
#13040 Improved HTTP authentication:
- Improved error logging for cases where the HTTP
Content-Type
header is missing or unrecognized, providing more detailed information. - Fixed an issue causing double encoding of query parameters in authentication HTTP requests
- Enhanced error messages when a POST method with a JSON content type is configured for authentication requests but the JSON template fails to render into valid JSON. This can occur, for example, when a template contains a placeholder like
${password}
but receives a non-UTF8 password input, leading to better transparency and easier debugging for such scenarios.
- Improved error logging for cases where the HTTP
-
#13196 Added a limit to the built-in authorization database, restricting the number of Access Control List (ACL) rules per client or user to a default of 100.
-
#13584 Fixed an issue with creating HTTP authorization that resulted in errors when the HTTP header list was empty.
-
#13618 Improved the type specifications for the
authorization/sources
endpoint to provide clearer and more concise error messages. -
#13624 Fixed an issue in the built-in authorizer where updating rules for a client or user could result in the total number of rules exceeding the
max_rules
limit. -
#13678 Made the deletion of an authenticator in the chain an idempotent operation, ensuring that deleting a non-existing authenticator always succeeds.
Data Integrations
-
#13207 Improved the
republish
rule engine action to accurately reflect the success and failure of message publishing. Previously, the success metrics were incremented even when the republish action failed to deliver the message to any subscribers. Now, if the action detects that a message fails to reach any subscriber, the failure metrics are correctly incremented. -
#13425 Improved the MQTT connector error log messages to provide clearer and more detailed information.
-
#13589 Fixed an issue where creating a rule with a string
"null"
for ID via the HTTP API was allowed, which could lead to an inconsistent configuration.
Operations
-
#13078 Improved validation and error handling in the EMQX Management API to ensure that requests with a JSON body include the
Content-Type: application/json
header. If the header is missing for APIs that expect JSON input, the server now correctly responds with a415 Unsupported Media Type
status code instead of400 Bad Request
. -
#13225 Enhanced security in authentication and authorization APIs by redacting sensitive data such as passwords. Previously, the APIs could return the original password values in responses. With this update, sensitive information is replaced with
******
to prevent accidental exposure and protect user credentials.
Gateways
- #13607 Fixed an issue where the QoS level for CoAP subscriptions displayed through the API did not match the actual QoS level being used. This discrepancy could cause confusion as successful subscriptions were not accurately reflected on the Dashboard.
Breaking changes
-
#13080 Updated the default value of the
mqtt.retry_interval
configuration from 30 seconds toinfinity
.Previously, EMQX would automatically retry message deliveries every 30 seconds by default. With the new default set to
infinity
, EMQX will no longer retry message deliveries automatically. This change aligns with MQTT specification standards, which generally do not recommend in-session message delivery retries.We understand that some users rely on the retry feature, so the ability to configure a specific retry interval is still available for backward compatibility.
-
#13190 Discontinued support for releases on CentOS 7 and Ubuntu 18. EMQX will no longer provide builds for these operating systems due to their end-of-life status.
-
#13248 Replaced the
builtin
durable storage backend with two new backends to provide better flexibility and scalability:-
builtin_local
: A durable storage backend that does not support replication, making it suitable for single-node deployments. This backend is available in both the open-source and enterprise editions of EMQX but is not compatible with multi-node clusters. -
builtin_raft
: A durable storage backend utilizing the Raft consensus algorithm for data replication across multiple nodes. This backend is exclusively available in the enterprise edition of EMQX, providing enhanced data durability and fault tolerance.
Additionally, several Prometheus metrics have been renamed to better reflect their functions:
-
emqx_ds_egress_batches
has been renamed toemqx_ds_buffer_batches
-
emqx_ds_egress_batches_retry
has been renamed toemqx_ds_buffer_batches_retry
-
emqx_ds_egress_batches_failed
has been renamed toemqx_ds_buffer_batches_failed
-
emqx_ds_egress_messages
has been renamed toemqx_ds_buffer_messages
-
emqx_ds_egress_bytes
has been renamed toemqx_ds_buffer_bytes
-
emqx_ds_egress_flush_time
has been renamed toemqx_ds_buffer_flush_time
-
-
#13526 Removed the Core-replicant feature from the Open-Source Edition. Starting from release 5.8, all nodes running the Open-Source Edition will operate in the Core role. This change does not impact Enterprise Edition users, who will continue to have access to the Core-replicant functionality. Additionally, the obsolete
cluster.core_nodes
configuration parameter has been removed as it is no longer needed. -
Dashboard Updates: The following features have been removed or restricted in the Open-Source Edition Dashboard:
- Monitoring:
- Delayed Publish
- Alarms
- Access Control:
- Authentication (LDAP)
- Authorization (LDAP)
- Flapping Detect
- Integration:
- Flow Designer
- Management:
- Monitoring
- Advanced MQTT
- Topic Rewrite
- Auto Subscribe
- Delayed Publish
- Diagnose:
- Topic Metrics
- Slow Subscriptions
- Monitoring:
1、 emqx-5.8.0-amzn2-amd64.rpm 58.38MB
2、 emqx-5.8.0-amzn2-amd64.rpm.sha256 64B
3、 emqx-5.8.0-amzn2-amd64.tar.gz 86.47MB
4、 emqx-5.8.0-amzn2-amd64.tar.gz.sha256 64B
5、 emqx-5.8.0-amzn2-arm64.rpm 57.23MB
6、 emqx-5.8.0-amzn2-arm64.rpm.sha256 64B
7、 emqx-5.8.0-amzn2-arm64.tar.gz 83.89MB
8、 emqx-5.8.0-amzn2-arm64.tar.gz.sha256 64B
9、 emqx-5.8.0-amzn2023-amd64.rpm 44.09MB
10、 emqx-5.8.0-amzn2023-amd64.rpm.sha256 64B
11、 emqx-5.8.0-amzn2023-amd64.tar.gz 88.42MB
12、 emqx-5.8.0-amzn2023-amd64.tar.gz.sha256 64B
13、 emqx-5.8.0-amzn2023-arm64.rpm 43.83MB
14、 emqx-5.8.0-amzn2023-arm64.rpm.sha256 64B
15、 emqx-5.8.0-amzn2023-arm64.tar.gz 85.41MB
16、 emqx-5.8.0-amzn2023-arm64.tar.gz.sha256 64B
17、 emqx-5.8.0-debian10-amd64.deb 41.4MB
18、 emqx-5.8.0-debian10-amd64.deb.sha256 64B
19、 emqx-5.8.0-debian10-amd64.tar.gz 90.37MB
20、 emqx-5.8.0-debian10-amd64.tar.gz.sha256 64B
21、 emqx-5.8.0-debian10-arm64.deb 40.74MB
22、 emqx-5.8.0-debian10-arm64.deb.sha256 64B
23、 emqx-5.8.0-debian10-arm64.tar.gz 87.28MB
24、 emqx-5.8.0-debian10-arm64.tar.gz.sha256 64B
25、 emqx-5.8.0-debian11-amd64.deb 41.47MB
26、 emqx-5.8.0-debian11-amd64.deb.sha256 64B
27、 emqx-5.8.0-debian11-amd64.tar.gz 88.41MB
28、 emqx-5.8.0-debian11-amd64.tar.gz.sha256 64B
29、 emqx-5.8.0-debian11-arm64.deb 40.81MB
30、 emqx-5.8.0-debian11-arm64.deb.sha256 64B
31、 emqx-5.8.0-debian11-arm64.tar.gz 85.39MB
32、 emqx-5.8.0-debian11-arm64.tar.gz.sha256 64B
33、 emqx-5.8.0-debian12-amd64.deb 41.5MB
34、 emqx-5.8.0-debian12-amd64.deb.sha256 64B
35、 emqx-5.8.0-debian12-amd64.tar.gz 88.53MB
36、 emqx-5.8.0-debian12-amd64.tar.gz.sha256 64B
37、 emqx-5.8.0-debian12-arm64.deb 40.81MB
38、 emqx-5.8.0-debian12-arm64.deb.sha256 64B
39、 emqx-5.8.0-debian12-arm64.tar.gz 85.32MB
40、 emqx-5.8.0-debian12-arm64.tar.gz.sha256 64B
41、 emqx-5.8.0-el8-amd64.rpm 52.23MB
42、 emqx-5.8.0-el8-amd64.rpm.sha256 64B
43、 emqx-5.8.0-el8-amd64.tar.gz 90.46MB
44、 emqx-5.8.0-el8-amd64.tar.gz.sha256 64B
45、 emqx-5.8.0-el8-arm64.rpm 50.94MB
46、 emqx-5.8.0-el8-arm64.rpm.sha256 64B
47、 emqx-5.8.0-el8-arm64.tar.gz 87.36MB
48、 emqx-5.8.0-el8-arm64.tar.gz.sha256 64B
49、 emqx-5.8.0-el9-amd64.rpm 44MB
50、 emqx-5.8.0-el9-amd64.rpm.sha256 64B
51、 emqx-5.8.0-el9-amd64.tar.gz 88.39MB
52、 emqx-5.8.0-el9-amd64.tar.gz.sha256 64B
53、 emqx-5.8.0-el9-arm64.rpm 43.84MB
54、 emqx-5.8.0-el9-arm64.rpm.sha256 64B
55、 emqx-5.8.0-el9-arm64.tar.gz 85.38MB
56、 emqx-5.8.0-el9-arm64.tar.gz.sha256 64B
57、 emqx-5.8.0-elixir-ubuntu22.04-amd64.tar.gz 97.21MB
58、 emqx-5.8.0-elixir-ubuntu22.04-amd64.tar.gz.sha256 64B
59、 emqx-5.8.0-macos13-amd64.zip 53.6MB
60、 emqx-5.8.0-macos13-amd64.zip.sha256 65B
61、 emqx-5.8.0-macos14-arm64.zip 52.88MB
62、 emqx-5.8.0-macos14-arm64.zip.sha256 65B
63、 emqx-5.8.0-ubuntu20.04-amd64.deb 41.53MB
64、 emqx-5.8.0-ubuntu20.04-amd64.deb.sha256 64B
65、 emqx-5.8.0-ubuntu20.04-amd64.tar.gz 91.62MB
66、 emqx-5.8.0-ubuntu20.04-amd64.tar.gz.sha256 64B
67、 emqx-5.8.0-ubuntu20.04-arm64.deb 40.9MB
68、 emqx-5.8.0-ubuntu20.04-arm64.deb.sha256 64B
69、 emqx-5.8.0-ubuntu20.04-arm64.tar.gz 88.46MB
70、 emqx-5.8.0-ubuntu20.04-arm64.tar.gz.sha256 64B
71、 emqx-5.8.0-ubuntu22.04-amd64.deb 43.5MB
72、 emqx-5.8.0-ubuntu22.04-amd64.deb.sha256 64B
73、 emqx-5.8.0-ubuntu22.04-amd64.tar.gz 88.97MB
74、 emqx-5.8.0-ubuntu22.04-amd64.tar.gz.sha256 64B
75、 emqx-5.8.0-ubuntu22.04-arm64.deb 43.41MB
76、 emqx-5.8.0-ubuntu22.04-arm64.deb.sha256 64B
77、 emqx-5.8.0-ubuntu22.04-arm64.tar.gz 85.9MB
78、 emqx-5.8.0-ubuntu22.04-arm64.tar.gz.sha256 64B
79、 emqx-5.8.0-ubuntu24.04-amd64.deb 43.43MB
80、 emqx-5.8.0-ubuntu24.04-amd64.deb.sha256 64B
81、 emqx-5.8.0-ubuntu24.04-amd64.tar.gz 88.98MB
82、 emqx-5.8.0-ubuntu24.04-amd64.tar.gz.sha256 64B
83、 emqx-5.8.0-ubuntu24.04-arm64.deb 43.18MB
84、 emqx-5.8.0-ubuntu24.04-arm64.deb.sha256 64B
85、 emqx-5.8.0-ubuntu24.04-arm64.tar.gz 85.96MB