github hivemq/hivemq-mqtt-client v1.2.0
1.2.0

latest releases: v1.3.3, v1.3.2, v1.3.1...
4 years ago

🌟 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/

Don't miss a new hivemq-mqtt-client release

NewReleases is sending notifications on new releases.