Async

A través de los servicios broker.async.*, se tiene acceso a funciones relacionadas con intercambio de mensajes asíncronos entre distintos Mat|r Devices. Recuerda que para crear este servicio primero necesitas crear un Channel. 
Mat|r Device:
Un Mat|r Device puede ser una Mat|r App corriendo en un broker particular o un IoT Device configurado desde la Plataforma.

 

MÉTODOS PÚBLICOS

void broker.async.initialize()

Realiza las configuraciones correspondientes en el Mat|r Device para la comunicación a través de canales. Esta llamada es requerida antes de la llamada al método connect. El servicio es inicializado una única vez por ejecución de la app, las siguientes llamadas son ignoradas.
NOTA: En caso que el device ya hubiese sido inicializado con metadata la misma quedará sin modificaciones.

 

Excepciones
AsyncServiceError – Has been an exception in async service ‘initialize’. Error al inicializar un Mat|r Device (Connection Error  | Server Error)

 

void broker.async.initialize(Map metadata)

Inicializa el Mat|r Device asociando información adicional: metadata, el cual podría ser null, o vacio.

 

Argumentos
metadata Map<String>: informacion adicional para asociar al Mat|r Device.

 

Excepciones
AsyncServiceError – Has been an exception in async service ‘initialize’. Error al inicializar un Mat|r Device (Connection Error | Server Error)

 

void broker.async.connect()

Conecta el Mat|r Device con el server de comunicación.

 

Excepciones
AsyncServiceError – Trying to run `connect` without initialize async service. Un Matr Device solo puede conectarse al server de comunicación luego de ser inicializado.
AsyncServiceError – Has been an exception in async service, in method ‘connect’. Error al conectar un Matr Device (Connection Error | Server Error)

 

void broker.async.subscribe(String canal, FunctionReference subscriptionCallback)

Suscribe el Mat|r Device con el server de comunicación en el canal indicado, pasando como parámetro una función subscriptionCallback que se ejecutará cuando se reciba un mensaje. Para referenciar la función debe utilizarse la sintaxis: @function(nombreModulo.nombreFuncion) y la misma debe contar con una firma que cumpla 2 condiciones: retornar void, y tener un único parámetro del tipo especificado en el canal al que se subscribe. Ej: void nombreFuncion(MessageType msg)

 

Argumentos
canal String: nombre del canal al que se subscribe.
subscriptionCallback FunctionReference: función que será llamada cuando llegue un mensaje al canal.

 

 

Excepciones
AsyncServiceError – AsyncServiceError – Trying to run `subscribe` without initialize async service. Un Mat|r Device solo puede suscribirse a un canal luego de ser inicializado y conectado.
AsyncServiceError – The channel ‘{channelName}’ doesn’t exist or you are not allowed to ‘subscribe’. El canal no existe.
AsyncServiceError -Trying to run ‘subscribe’ without connection. Un Mat|r device solo puede suscribirse a un canal luego de haberse conectado a través del método connect.
ModuleNotFound – Module ‘moduleName’ not found in function argument of ‘broker.async.subscribe’ call. No se encuentra el módulo referenciado en el argumento ‘subscriptionCallback’.
FunctionNotFound – Function ‘functionName’ not found in module ‘moduleName’ in function argument of ‘broker.async.subscribe’ call. No se encuentra la función dentro del módulo ‘moduleName’ referenciado en el argumento ‘subscriptionCallback’.
WrongFunctionSignature – Wrong signature in function argument ‘module.functionName()’ of ‘broker.async.subscribe’ call. Expected signature: ‘void function(Model aModel)’. La firma de la función del argumento ‘function’ no coincide con una firma esperada con la definición del tipo de mensaje del canal.
AsyncServiceError – Has been an exception in async service, in method ‘subscribe’. Error al suscribir un Mat|r Device a un canal (Connection Error | Server Error)

 

void broker.async.unsubscribe(String canal)

Elimina la suscripción del Mat|r Device con el server de comunicación en el canal indicado en canal.

 

Argumentos
canal String: nombre del canal al que se de-subscribe.

 

 

Excepciones
AsyncServiceError – AsyncServiceError – Trying to run `unsubscribe` without initialize async service. Un Mat|r Device solo puede eliminar una suscripción de un canal luego de ser inicializado y conectado.
AsyncServiceError – The channel ‘{channelName}’ doesn’t exist or you are not allowed to ‘unsubscribe’. El canal no existe.
AsyncServiceError -Trying to run ‘unsubscribe’ without connection. Un Mat|r device solo puede eliminar una suscripción de un canal luego de haberse conectado a través del método connect.
AsyncServiceError – Has been an exception in async service, in method ‘unsubscribe’. Error al intentar eliminar una suscripción de un Mat|r Device a un canal (Connection Error | Server Error)

 

void broker.async.publish(String canal, Model mensaje)

Publica un mensaje en el canal.

 

Argumentos
canal String: nombre del canal al que se publica.
mensaje Model: Es el modelo que se enviará a través del canal. El tipo del modelo deberá coincidir con el tipo de mensaje especificado en el canal al que se publica.

 

 

Excepciones
AsyncServiceError – AsyncServiceError – Trying to run `publish` without initialize async service. Un Mat|r Device solo puede publicar en un canal luego de ser inicializado y conectado.
AsyncServiceError – The channel ‘{channelName}’ doesn’t exist or you are not allowed to ‘publish’. El canal no existe.
AsyncServiceError -Trying to run publish without connection. Un Mat|r device solo puede publicar en un canal luego de haberse conectado a través del método connect.

 

void broker.async.disconnect()

Desconecta al Matr Device del servidor.
NOTA: Luego de desconectarse se borran todas las suscripciones existentes.

 

Excepciones
AsyncServiceError – AsyncServiceError – Trying to run `disconnect` without initialize async service. Un Mat|r Device solo puede desconectar luego de ser inicializado.
AsyncServiceError – Has been an exception in async service, in method `disconnect`. Error al desconectar un Mat|r Device de un canal (Connection Error | Server Error)