-
Fix issue when calling a function in a Lua script that requires more time to complete than the default
gen_server
timeout (#589). -
Silently drop messages published by the client that use a routing key starting with '$'.
-
Full MQTTv5 support
With this release VerneMQ officially supports MQTT protocol version
5.0. The MQTTv5 support is currently marked as in BETA and we may
still have to change some things.VerneMQ has full support for the complete MQTTv5 spec, but to list a
few of the new features:-
Support for enhanced (re)authentication
-
User properties
-
Message Expiration
-
Last Will and Testament delay
-
Shared subscriptions
-
Retained messages
-
Request/Response flows
-
Topic aliases
VerneMQ supports topic aliases from both the client to the broker and from
the broker to the client.When a client connects to the broker, the broker will inform the client of
the maximum allowed topic alias using the topic alias max property on the
CONNACK packet (if it has been set to a non-zero value). The topic alias
maximum property can be configured through thetopic_alias_max
configuration variable or overriden in a plugin in theauth_on_register
hook. The broker will then handle topic aliases from the client as per the
MQTTv5 spec. -
Flow control
-
Subscription flags Retain as Published, No Local and Retain Handling.
-
Subscriber ids
By default MQTTv5 is disabled, but can be enabled on a listener basis, for
examplelistener.tcp.allowed_protocol_versions=3,4,5
would enable MQTT
version 3.1, 3.1.1 and 5.0 on the TCP listener.MQTTv5 support has been added to the
vmq_passwd
,vmq_acl
,vmq_webhooks
plugins as well as the parts of thevmq_diversity
plugin to support the
MySQL, PostgreSQL, Redis and MongoDB authentication and authorization
mechanisms. The Lua scripting language provided by thevmq_diversity
plugin
does not yet expose all MQTT 5.0 plugin hooks.The
vmq_bridge
plugin currently has no support for MQTTv5.!! Note !! that all MQTTv5 related features and plugins are in BETA and may
still change if needed. -
-
The metrics:
mqtt_connack_not_authorized_sent
mqtt_connack_bad_credentials_sent
mqtt_connack_server_unavailable_sent
mqtt_connack_identifier_rejected_sent
mqtt_connack_unacceptable_protocol_sent
mqtt_connack_accepted_sentHave been merged into a single metric
mqtt_connack_sent
and the various MQTT
3.1.1 return codes have been mapped into labels. So for example
mqtt_connack_sent
with the labelreturn_code=success
replaces
mqtt_connack_accepted_sent
. -
Added on_message_drop hook that is called for every message dropped due to
exceeding the MQTTv5 max_packet_size property, hitting the message expiry,
or when load shedding when enqueing messages. -
Fix ordering bug in webhook subscribe topic authentication and topic rewrites
(#823) -
Fix issue when terminating the
vmq_server
application (#828). -
Make VerneMQ build on SmartOS / Illumos / Solaris.
-
Ensure strings passed from Lua to the logger are escaped (#864).
-
Handle Mongo Date / ISODate datatype properly in Lua / vmq_diversity
(#857). -
Optimize subscribe/unsubscribe operations for large fanout cases.
-
Allow non-standard MQTT version 131 (MQTT 3.1 bridge) by default (this was
accidentally changed in VerneMQ 1.4.0). -
Improve error messages returned by the
vmq_diversity
plugin so it's easier
to understand and debug authentication and authorisation issues. -
Improve performance for looking up queue processes.
-
Make VerneMQ run on Erlang/OTP 21. To do this we had to upgrade
rebar3
to
version 3.6.0 andlager
to version 3.6.3. We also removed theeper
dependency and suppressed some new warnings due toerlang:get_stacktrace/0
having been deprecated in Erlang/OTP 21. -
The bridge plugin (
vmq_bridge
) now has an option to queue outgoing message
in case the network connection disappears. This is configurable with the
max_outgoing_buffered_messages
setting on a bridge. In addition the bridge
now has a simple cli interface undervmq-admin bridge show
. This work was
kindly sponsored by Diacare-Soft(http://diacare-soft.ru). -
Fix multiple message retry issues in the MQTT client used by vmq_bridge.
-
Fix issue where the message ordering wasn't preserved after a client reconnect.
-
Add experimental
vmq_swc
plugin that provides an alternative to the existing
vmq_plumtree
for metadata storage and replication. One must compile VerneMQ
withmake swc
to generate a release containing thevmq_swc
plugin. -
Remove unused
vmq_bridge
sslcapath
config option. This was never used
internally.