// Pre-requisites
import 'package:pip_services3_commons/pip_services3_commons.dart';
import 'package:pip_services3_messaging/pip_services3_messaging.dart';
import 'package:pip_services3_mqtt/pip_services3_mqtt.dart';

void main(List<String> arguments) async {
  // Component creation and configuration
  var queue = MqttMessageQueue();

  queue.configure(ConfigParams.fromTuples([
    'topic', 'mytopic', // set topic
    'connection.protocol', 'mqtt',
    'connection.host', 'localhost',
    'connection.port', 1883,
    'options.autosubscribe', true, // autosubscription on the topic
    'options.serialize_envelope', true // converts object into musquitto values
  ]));

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

  // Send a message
  await queue.send('123', MessageEnvelope(null, 'mymessage', 'ABC1234'));

  // Receive a message
  var message = await queue.receive('123', 10000);
  print(message?.getMessageAsString()); // Prints 'ABC1234'

  // Close the connection
  await queue.close('123');
}