Un mensaje activo (en informática ) es un objeto de mensajería capaz de realizar el procesamiento por sí solo. Es un protocolo de mensajería ligero que se utiliza para optimizar las comunicaciones de red con énfasis en la reducción de la latencia mediante la eliminación de los gastos generales de software asociados con el almacenamiento en búfer y proporcionando a las aplicaciones acceso directo a nivel de usuario al hardware de la red. [1] [2] Esto contrasta con los sistemas de mensajería tradicionales basados en computadora en los que los mensajes son entidades pasivas sin capacidad de procesamiento. [3]
Los mensajes activos son primitivos de comunicación para aprovechar al máximo el rendimiento y la flexibilidad de las interconexiones informáticas modernas. A menudo se los clasifica como uno de los tres tipos principales de programación de memoria distribuida, siendo los otros dos el paralelismo de datos y el paso de mensajes . La opinión es que los mensajes activos son en realidad un mecanismo de nivel inferior que se puede utilizar para implementar el paralelismo de datos o el paso de mensajes de manera eficiente.
La idea básica es que cada mensaje tiene un encabezado que contiene la dirección o índice de un manejador de espacio de usuario que se ejecutará al llegar el mensaje, con el contenido del mensaje pasado como argumento al manejador. Los primeros sistemas de mensajes activos pasaban la dirección de código remoto real a través de la red, sin embargo, este enfoque requería que el iniciador conociera la dirección de la función manejadora remota al componer un mensaje, lo que puede ser bastante limitante incluso dentro del contexto de un modelo de programación SPMD (y generalmente se basa en la uniformidad del espacio de direcciones que está ausente en muchos sistemas modernos). Las interfaces de mensajes activos más nuevas requieren que el cliente registre una tabla con el software en el momento de la inicialización que asigna un índice entero a la dirección local de una función manejadora; en estos sistemas, el remitente de un mensaje activo proporciona un índice en la tabla del manejador remoto, y al llegar el mensaje activo, la tabla se utiliza para asignar este índice a la dirección del manejador que se invoca para manejar el mensaje. [4]
Otras variaciones de mensajes activos [ cita requerida ] llevan el código en sí, no un puntero al código. El mensaje normalmente lleva algunos datos. Al llegar al extremo receptor, se adquieren más datos y se realiza el cálculo en el mensaje activo, haciendo uso de los datos del mensaje así como de los datos del nodo receptor. Esta forma de mensajería activa no se limita a SPMD , aunque el originador y el receptor deben compartir algunas nociones sobre qué datos se pueden acceder en el nodo receptor.
En el proyecto SwarmESB, una implementación de nivel superior para los mensajes activos también se denomina comunicación Swarm. El modelo básico de los mensajes activos se amplía con nuevos conceptos y se utiliza Java Script para expresar el código de los mensajes activos.