MqttMessageQueue class Null safety

Message queue that sends and receives messages via MQTT message broker.

MQTT is a popular light-weight protocol to communicate IoT devices.

Configuration parameters

  • topic: name of MQTT topic to subscribe
  • qos: QoS from 0 to 2. Default 0
  • connection(s):
    • discovery_key: (optional) a key to retrieve the connection from IDiscovery
    • host: host name or IP address
    • port: port number
    • uri: resource URI or connection string with all parameters in it
  • credential(s):
    • store_key: (optional) a key to retrieve the credentials from ICredentialStore
    • username: user name
    • password: user password
  • options:
    • serialize_envelope: (optional) true to serialize entire message as JSON, false to send only message payload (default: true)
    • autosubscribe: (optional) true to automatically subscribe on option (default: false)
    • qos: (optional) quality of service level aka QOS (default: 0)
    • retain: (optional) retention flag for published messages (default: false)
    • retry_connect: (optional) turns on/off automated reconnect when connection is log (default: true)
    • connect_timeout: (optional) number of milliseconds to wait for connection (default: 30000)
    • reconnect_timeout: (optional) number of milliseconds to wait on each reconnection attempt (default: 1000)
    • keepalive_timeout: (optional) number of milliseconds to ping broker while inactive (default: 3000)

References

  • :logger::*:1.0 (optional) ILogger components to pass log messages
  • :counters::*:1.0 (optional) ICounters components to pass collected measurements
  • :discovery::*:1.0 (optional) IDiscovery services to resolve connections
  • :credential-store::*:1.0 (optional) Credential stores to resolve credentials
  • :connection:mqtt::1.0 (optional) Shared connection to MQTT service

See MessageQueue See MessagingCapabilities

Example

    var queue = MqttMessageQueue('myqueue');
    queue.configure(ConfigParams.fromTuples([
      'topic', 'mytopic',
      'connection.protocol', 'mqtt'
      'connection.host', 'localhost'
      'connection.port', 1883
    ]));

    await queue.open('123');
        ...

    await queue.send('123', MessageEnvelope(null, 'mymessage', 'ABC'));

    var message await = queue.receive('123')
        if (message != null) {
           ...
           await queue.complete('123', message);
        }
Inheritance
Implemented types

Constructors

MqttMessageQueue([String? name])
Creates a new instance of the message queue. [...]

Properties

capabilities MessagingCapabilities
read / write, inherited
connectionResolver ConnectionResolver
read / write, inherited
counters CompositeCounters
read / write, inherited
credentialResolver CredentialResolver
read / write, inherited
hashCode int
The hash code for this object. [...]
read-only, inherited
logger CompositeLogger
read / write, inherited
name String
read / write, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited

Methods

abandon(MessageEnvelope message) Future
Returnes message into the queue and makes it available for all subscribers to receive it again. This method is usually used to return a message which could not be processed at the moment to repeat the attempt. Messages that cause unrecoverable errors shall be removed permanently or/and send to dead letter queue. [...]
override
beginListen(String? correlationId, IMessageReceiver receiver) → void
Listens for incoming messages without blocking the current thread. [...]
inherited
checkOpen(String? correlationId) → void
Checks if the queue has been opened and throws an exception is it's not. [...]
inherited
clear(String? correlationId) Future
Clears component state. [...]
override
close(String? correlationId) Future
Closes component and frees used resources. [...]
override
complete(MessageEnvelope message) Future
Permanently removes a message from the queue. This method is usually used to remove the message after successful processing. [...]
override
configure(ConfigParams config) → void
Configures component by passing configuration parameters. [...]
override
endListen(String? correlationId) → void
Ends listening for incoming messages. When this method is call listen unblocks the thread and execution continues. [...]
override
fromMessage(MessageEnvelope? message) Map<String, dynamic>?
getCapabilities() MessagingCapabilities
Gets the queue capabilities [...]
inherited
getName() String
Gets the queue name [...]
inherited
getTopic() String
isOpen() bool
Checks if the component is opened. [...]
override
listen(String? correlationId, IMessageReceiver receiver) → void
Listens for incoming messages and blocks the current thread until queue is closed. [...]
override
moveToDeadLetter(MessageEnvelope message) Future
Permanently removes a message from the queue and sends it to dead letter queue. [...]
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
onMessage(String topic, String data, dynamic packet) → void
open(String? correlationId) Future
Opens the component. [...]
override
openWithParams(String? correlationId, ConnectionParams? connection, CredentialParams? credential) Future
Opens the component with given connection and credential parameters. [...]
override
peek(String? correlationId) Future<MessageEnvelope?>
Peeks a single incoming message from the queue without removing it. If there are no messages available in the queue it returns null. [...]
override
peekBatch(String? correlationId, int messageCount) Future<List<MessageEnvelope>>
Peeks multiple incoming messages from the queue without removing them. If there are no messages available in the queue it returns an empty list. [...]
override
readMessageCount() Future<int>
Reads the current number of messages in the queue to be delivered. [...]
override
receive(String? correlationId, int waitTimeout) Future<MessageEnvelope?>
Receives an incoming message and removes it from the queue. [...]
override
renewLock(MessageEnvelope message, int lockTimeout) Future
Renews a lock on a message that makes it invisible from other receivers in the queue. This method is usually used to extend the message processing time. [...]
override
send(String? correlationId, MessageEnvelope message) Future
Sends a message into the queue. [...]
override
sendAsObject(String? correlationId, String messageType, dynamic message) Future
Sends an object into the queue. Before sending the object is converted into JSON string and wrapped in a MessageEnvelope. [...]
inherited
sendMessageToReceiver(IMessageReceiver? receiver, MessageEnvelope? message) → void
setReferences(IReferences references) → void
Sets references to dependent components. [...]
override
subscribe(String? correlationId) Future
toString() String
Gets a string representation of the object. [...]
inherited
unsetReferences() → void
Unsets (clears) previously set references to dependent components.
override

Operators

operator ==(Object other) bool
The equality operator. [...]
inherited