Skip to content

Releases: hivemq/hivemq-mqtt-client

1.3.3

03 Oct 08:11
c070dec
Compare
Choose a tag to compare

What's Changed

  • Upgrade Netty to 4.1.99.Final by @wborn in #590 - Fixes multiple CVEs.

Full Changelog: v1.3.2...v1.3.3

1.3.2

28 Aug 11:50
4232241
Compare
Choose a tag to compare

What's Changed

  • Add reasonCode to PubComp, PubRel, PubRec and PubAck by @LukasBrand in #591

New Contributors

Full Changelog: v1.3.1...v1.3.2

1.3.1

12 Apr 13:52
c551094
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.3.0...v1.3.1

1.3.0

02 Dec 09:57
Compare
Choose a tag to compare

🌟 Features

  • Added the ability to define restrictions for the MQTT 3 API #512

🗒️ Miscellaneous

  • Improved Javadoc
  • Improved Build and Release Infrastructure

❤️ Thanks to all contributors

  • @SgtSilvio
  • @YannickWeber
  • Also thanks to all code reviewers and all who created valuable issues

Related blog post: https://www.hivemq.com/blog/hivemq-mqtt-client-1-3-0-released/

1.2.2

08 Apr 20:42
ccb9b01
Compare
Choose a tag to compare

🐞 Bug fixes

  • Fixed that a failure to shutdown the netty event loop leaves bad executor in cache #445
  • Fixed that threads are not terminated when using manual acknowledgement with QoS 0 #462
  • The client always reads the DISCONNECT message even if the server closes the connection while the client sends data #466
  • SSLExceptions and ProxyConnectExceptions are not logged unnecessarily when they are handled correctly #468

🗒️ Misc

  • Direct publishing to Maven Central #478
  • Improved Gradle build files #446 #478

❤️ Thanks to all contributors

  • @MicWalter
  • @SgtSilvio
  • @YannickWeber
  • Also thanks to all code reviewers and all who created valuable issues

Related blog post: https://www.hivemq.com/blog/hivemq-mqtt-client-1-2-2-released/

1.2.1

09 Aug 14:41
3f1c055
Compare
Choose a tag to compare

🐞 Bug fixes

  • Fixed subList operation on returned immutable lists #417
  • Avoid resending PUBACK and PUBREC on new connections #428
  • Root multi level wildcards are correctly restored by automatic resubscribe #436

🗒️ Misc

  • Improved Gradle build files #420
  • Cleaned up annotation placement for nested classes #426

❤️ Thanks to all contributors

  • @SgtSilvio
  • Also thanks to all code reviewers and all who created valuable issues

Related blog post:

1.2.0

21 Apr 18:56
d94dfce
Compare
Choose a tag to compare

🌟 Features

  • Manual message acknowledgement #304 #403
    Use case: Ensure at least once delivery from the broker even if client applications crash

    • Selectively enable manual acknowledgement for specific streams
    • Acknowledge messages that are emitted to multiple streams independently per stream
      (the client aggregates the acknowledgments before sending MQTT acknowledgements)
    • Order of manual acknowledgment does not matter
      (the client automatically ensures the order of MQTT acknowledgments for 100% compatibility with the MQTT specification)
  • New Reactor API #255 #388 #397
    Use case: Easier integration into reactor applications

  • Decoupled subscription/publishing lifecycles from connection/session lifecycles

    • Subscribe and unsubscribe operations can now be called irrespective of the current connection status (similar to the publishes operation) #398
      Use case: Set up subscriptions before connecting the client

    • Restore subscriptions automatically if the session expires and the client reconnects (enabled by default, configurable) #297 #398
      Use case: Easier to build continuously-connected applications that need to maintain their subscriptions as long as the application is running (even in the edge case that the session expires)

    • Republish pending and queued messages even if the session expires and the client reconnects (disabled by default, configurable) #288 #398
      Use case: Easier to build continuously-connected applications that want to ensure at-least-once delivery to the broker (even in the edge case that the session expires)

  • New transport features:

    • Proxy support: SOCKS4, SOCKS5, HTTP CONNECT #81 #281 #364 #401
      Use case: Tunnel the MQTT connection through a proxy

    • Improved TLS support: #201 #401

      • TLS Session Resumption
        Use case: Consume less bandwidth and computing resources when reconnecting and resuming a TLS session
      • Hostname verification: Default is the same as HTTPS hostname verification, but can be customized
        Usecase: Verify that you are communicating with the right broker
    • Specify a WebSocket query string #335 #336
      Usecase: Communicate with WebSocket endpoints that require a query string

    • Specify the local bind address and/or port #308 #365
      Use case: Support multiple network interfaces

    • Configurable timeouts: #401

      • Socket connect timeout
      • MQTT connect timeout
      • WebSocket handshake timeout
      • Proxy handshake timeout
  • New bulk builder methods for consuming arrays, collections, or streams: #170 #290 #387

    • User properties builder addAll
    • Subscribe builder addSubscriptions
    • Unsubscribe builder addTopicFilters

✨ Improvements

  • Added CheckReturnValue annotation that enables IDE assistance to flag unused return values #385
  • Javadoc and code style improvements #404 #406 #407

🗒️ Misc

  • Modularization of artifacts #364
    Reasoning: Keep required dependencies to a minimum, future releases might add more modules for diverse integrations
    • hivemq-mqtt-client: Base dependency
    • hivemq-mqtt-client-websocket: Adds dependencies for the WebSocket transport
    • hivemq-mqtt-client-proxy: Adds dependencies for the proxy transport
    • hivemq-mqtt-client-epoll: Adds dependencies for the native epoll socket implementation
    • hivemq-mqtt-client-reactor: Reactor API for the HiveMQ MQTT Client

⚠️ Behavioral changes

  • By default, subscriptions are now automatically restored when the session expires and the client reconnects.
    If desired, the default behavior can be disabled with MqttClientReconnector.resubscribeIfSessionExpired(false)

  • When TLS is used, HTTPS hostname verification is now performed by default, but can be customized with MqttClientSslConfigBuilder.hostnameVerifier

  • The hivemq-mqtt-client artifact in version 1.1.4 and below is now modularized into the artifacts hivemq-mqtt-client, hivemq-mqtt-client-websocket, and hivemq-mqtt-client-epoll
    If you use the WebSocket transport or the native epoll socket implementation, please specify the additional dependencies

❤️ Thanks to all contributors

Related blog post: https://www.hivemq.com/blog/hivemq-mqtt-client-1-2-0-released/

1.1.4

02 Mar 15:01
4f5f3f6
Compare
Choose a tag to compare

🐞 Bug fixes

  • Adjusts QoS 2 handling to prevent possible disconnect/reconnect loops when PUBREL packets are resent #377
  • Ensures that event loops are always released to eliminate an issue that some threads unnecessarily remain active in rare cases (hostname not found and reconnect disabled) #356
  • Automatically validates the Will payload maximum of 65,535 bytes to provide better feedback and decrease errors. #354 #355

✨ Improvements

  • Further optimization of memory usage, a client instance now only uses around 5 kB #370
  • Improved TopicAliasAutoMapping for better utilization of topic aliases #370
  • Reduced flush calls for many small messages for better utilization of MTU size #370
  • Small improvements for enhanced authentication handling #358
  • Also ping when no message has been read for the keep alive time #357
  • No I/O exceptions are logged while disconnecting when the server sends an RST instead of a FIN flag #374
  • Connecting to an MQTT 3 only broker with MQTT 5 now returns an Mqtt5ConnAck with reason code UNSUPPORTED_PROTOCOL_VERSION instead of an MqttDecodeException #327
  • Added Javadoc for reason codes and other enums #371

🗒️ Misc

  • Improved Gradle build files #363
  • Improved test coverage #372
  • New users section in the readme and documentation. #362
    If you use the HiveMQ MQTT Client in a project that is not listed in the new section, feel free to open an issue or pull request.

❤️ Thanks to all contributors

  • @LukasHiveMQ
  • @SgtSilvio
  • Also thanks to all code reviewers and all who created valuable issues

Related blog post: https://www.hivemq.com/blog/hivemq-mqtt-client-1-1-4-released/

1.1.3

20 Nov 13:45
637aa02
Compare
Choose a tag to compare

🐞 Bug fixes

  • Avoid possible stack overflow when using topic filters with a large number of levels (4000+) #334 #338

✨ Improvements

  • TLS Server Name Indication (SNI) support #331 #333
  • Client now updates its session expiry interval when it is set in a disconnect message #329
  • Client event loop threads can be easier determined by the name prefix com.hivemq.client.mqtt #330
  • The dependency netty-transport-native-epoll is now optional and can be excluded if not needed #330
  • Externally created netty event loops can now be passed to the executor config #330

🗒️ Misc

  • Modularized build and added examples module #328 #337
    You can find the examples here

❤️ Thanks to all contributors

  • @dajudge
  • @SgtSilvio
  • Also thanks to all code reviewers and all who created valuable issues

Related blog post: https://www.hivemq.com/blog/hivemq-mqtt-client-1-1-3-released/

1.1.2

09 Aug 15:20
e0c677f
Compare
Choose a tag to compare

🐞 Bug fixes

  • MQTT 3 clients do not get nested Mqtt5Exceptions anymore but Mqtt3Exceptions #316
  • Exceptions of async operations delivered by CompletableFuture are not wrapped in CompletionException anymore consistently #320

✨ Improvements

  • Enabled using the HiveMQ MQTT Client as Java module and OSGi module #269

❤️ Thanks to all contributors

  • @J-N-K
  • @SgtSilvio
  • Also thanks to all code reviewers and all who created valuable issues

Related blog post: https://www.hivemq.com/blog/hivemq-mqtt-client-1-1-2-released/