Class MqttClientConnection

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    public class MqttClientConnection
    extends CrtResource
    This class wraps aws-c-mqtt to provide the basic MQTT pub/sub functionality via the AWS Common Runtime MqttClientConnection represents a single connection from one MqttClient to an MQTT service endpoint
    • Constructor Detail

      • MqttClientConnection

        public MqttClientConnection​(MqttConnectionConfig config)
                             throws MqttException
        Constructs a new MqttClientConnection. Connections are reusable after being disconnected.
        Parameters:
        config - Configuration to use
        Throws:
        MqttException - If mqttClient is null
      • MqttClientConnection

        public MqttClientConnection​(Mqtt5Client mqtt5client,
                                    MqttClientConnectionEvents callbacks)
                             throws MqttException
        Constructs a new MqttClientConnection from a Mqtt5Client. Connections are reusable after being disconnected.
        Parameters:
        mqtt5client - the mqtt5 client to setup from
        callbacks - connection callbacks triggered when receive connection events
        Throws:
        MqttException - If mqttClient is null
    • Method Detail

      • connect

        public java.util.concurrent.CompletableFuture<java.lang.Boolean> connect()
                                                                          throws MqttException
        Connect to the service endpoint and start a session
        Returns:
        Future result is true if resuming a session, false if clean session
        Throws:
        MqttException - If the port is out of range
      • disconnect

        public java.util.concurrent.CompletableFuture<java.lang.Void> disconnect()
        Disconnects the current session
        Returns:
        When this future completes, the disconnection is complete
      • subscribe

        public java.util.concurrent.CompletableFuture<java.lang.Integer> subscribe​(java.lang.String topic,
                                                                                   QualityOfService qos,
                                                                                   java.util.function.Consumer<MqttMessage> handler)
        Subscribes to a topic
        Parameters:
        topic - The topic to subscribe to
        qos - QualityOfService for this subscription
        handler - A handler which can receive an MqttMessage when a message is published to the topic
        Returns:
        Future result is the packet/message id associated with the subscribe operation
      • subscribe

        public java.util.concurrent.CompletableFuture<java.lang.Integer> subscribe​(java.lang.String topic,
                                                                                   QualityOfService qos)
        Subscribes to a topic without a handler (messages will only be delivered to the OnMessage handler)
        Parameters:
        topic - The topic to subscribe to
        qos - QualityOfService for this subscription
        Returns:
        Future result is the packet/message id associated with the subscribe operation
      • onMessage

        public void onMessage​(java.util.function.Consumer<MqttMessage> handler)
        Sets a handler to be invoked whenever a message arrives, subscription or not
        Parameters:
        handler - A handler which can receive any MqttMessage
      • unsubscribe

        public java.util.concurrent.CompletableFuture<java.lang.Integer> unsubscribe​(java.lang.String topic)
        Unsubscribes from a topic
        Parameters:
        topic - The topic to unsubscribe from
        Returns:
        Future result is the packet/message id associated with the unsubscribe operation
      • publish

        public java.util.concurrent.CompletableFuture<java.lang.Integer> publish​(MqttMessage message)
        Publishes a message to a topic.
        Parameters:
        message - The message to publish.
        Returns:
        Future value is the packet/message id associated with the publish operation
      • publish

        @Deprecated
        public java.util.concurrent.CompletableFuture<java.lang.Integer> publish​(MqttMessage message,
                                                                                 QualityOfService qos,
                                                                                 boolean retain)
        Deprecated.
      • getOperationStatistics

        public MqttClientConnectionOperationStatistics getOperationStatistics()
        Returns statistics about the current state of the MqttClientConnection's queue of operations.
        Returns:
        Current state of the connection's queue of operations.