WebSphere Message Broker implementa el acceso a corrientes de datos TCP/IP de entrada y salida a través de una serie de nodos.
Existen dos conjuntos de nodos TCP/IP: los nodos TCPIPServer y TCPIPClient. Ambos conjuntos tienen una función idéntica en términos de acceso a las corrientes de datos; sin embargo, uno de los conjuntos utiliza conexiones de cliente y el otro utiliza conexiones de servidor. Como resultado, los nodos establecen las conexiones de distintas formas pero utilizan las corrientes de datos de la misma forma una vez se han establecido las conexiones.
La principal diferencia entre las propiedades de los nodos es que los nodos TCPIPServer no permiten cambiar el nombre de host (que ha de ser siempre hostlocal). Todos los nodos TCPIPServer que utilicen el mismo puerto han de estar en el mismo grupo de ejecución debido a que el puerto está ligado al proceso de ejecución. Los nodos TCPIPClient de un mismo nodo se pueden utilizar en distintos grupos de ejecución, pero las conexiones de cliente no se pueden compartir debido a que están ligadas a un grupo de ejecución determinado, que está correlacionado con un proceso. Dentro de los dos conjuntos de nodos (TCPIPClient y TCPIPServer), hay tres tipos de nodo:
Los nodos de entrada y de recepción acceden a la corriente de entrada para recuperar datos, y los nodos de salida acceden a la corriente de salida para enviar datos. Ningún nodo individual puede acceder a ambas corrientes de datos simultáneamente. Para acceder a las dos corrientes simultáneamente, debe conectar varios nodos en un flujo de mensajes.
Los servicios configurables para los nodos TCPIPServer y TCPIPClient los debe predefinir un administrador. Los detalles de conexión para los servicios configurables TCP/IP los define el administrador al configurar el intermediario, para un entorno de prueba o de producción. Los servicios configurables TCP/IP deben definirse antes de que desplegar un flujo de mensajes que los utilice, aunque se trate de un entorno de prueba. Para obtener más información, consulte Configuración de propiedades para TCP/IP.
El nodo de entrada permite el acceso a la corriente de entrada de una conexión. El nodo se desencadena mediante la llegada de datos en la corriente de datos e inicia el proceso del flujo de mensajes. El nodo de entrada controla la gestión de hebras y transacciones. Los nodos TCP/IP no son transaccionales en el sentido que interaccionan con TCP/IP, pero otros nodos del mismo flujo pueden seguir siendo transaccionales (por ejemplo, los nodos de WebSphere MQ). El nodo de entrada no crea una hebra para cada conexión utilizada sino que espera a que se cumplan dos requisitos:
Por ejemplo, un nodo de entrada que tenga únicamente una entrada adicional puede gestionar 1.000 conexiones TCP/IP. Esta situación es posible debido a que el nodo no sondea las conexiones sino que se desencadena cuando se cumplen las condiciones especificadas.
El nodo de recepción se desencadena para leer datos de una conexión cuando llega un mensaje a su terminal de entrada (In). Espera a que lleguen datos y, a continuación, los envía al terminal de salida (Out). Puede configurar el nodo de recepción para que utilice una conexión determinada (especificando un ID de conexión) o para que utilice cualquier conexión disponible. Si el nodo se ha configurado para que utilice cualquier conexión disponible, recibe datos de la primera conexión que tenga datos disponibles.
El nodo de salida envía datos a una conexión. Lo desencadena un mensaje que llega al terminal de entrada (In) y, a continuación, envía los datos que contiene el mensaje a la corriente de datos. El mismo mensaje que se recibe en el nodo se envía al terminal de salida (Out).
Los seis nodos de cliente y servidor se pueden combinar para proporcionar operaciones más complejas. Por ejemplo, un nodo de salida seguido de un nodo de recepción permite una solicitud asíncrona de datos:
Cuando se crea una conexión se le asigna un único identificador. Siempre que un nodo utiliza una conexión, el ID utilizado se graba en el entorno local. Todos los nodos que lo utilicen posteriormente en el flujo, podrán acceder a la misma conexión especificando el ID; los nodos de recepción y de salida encuentran el ID buscándolo en una ubicación especificada en el entorno local. De forma predeterminada, la ubicación en la que un nodo graba sus detalles de conexión es distinta de la ubicación que el siguiente nodo examina para ver si hay algún ID que pueda utilizar. Los nodos se pueden configurar para que utilicen el ID enviado por un nodo anterior. Por ejemplo, la combinación de nodos de entrada y de salida que se muestra en Combinación de nodos se puede configurar para que el nodo de recepción utilice los datos de WrittenDestination del nodo de salida precedente.
La utilización del ID permite a una serie de nodos acceder a una misma conexión, pero no impide que dos hebras de flujo de mensajes accedan a la misma conexión. Cuando se utiliza una conexión por primera vez, se puede reservar para que ningún otro nodo pueda acceder a ella a menos que conozca el ID. Por ejemplo, la combinación de nodos de entrada y de salida que se muestra en Combinación de nodos reserva la conexión para que ninguna otra hebra pueda acceder a ella antes de que el nodo de recepción la utilice. De forma predeterminada, el nodo de recepción libera la conexión cuando ha terminado.
La posibilidad de reservar conexiones (y de acceder a ellas especificando el ID correcto) permite crear interacciones correctas con conexiones TCP/IP que distribuyen flujos completos e incluso múltiples flujos de mensajes. Esto permite utilizar las interacciones de TCP/IP con otros mecanismos de transporte asíncrono, como WebSphere MQ.
Las conexiones reservadas se han de liberar en algún momento, de lo contrario quedarán no disponibles indefinidamente. Para obtener más información sobre conexiones reservadas y disponibles, consulte Gestión de conexiones.
Los nodos TCP/IP se pueden utilizar en patrones asíncronos en los que los datos se envían a través de un nodo TCP/IP de salida y se reciben a través de un nodo TCP/IP de entrada. La distribución de dos flujos de mensajes hace que cualquier estado del primer flujo se pierda y, por lo tanto, sea inaccesible para el segundo flujo. Los nodos TCP/IP permiten almacenar algunos detalles de respuesta en una conexión y éstos detalles quedan disponibles para que el nodo de entrada los utilice cuando llegue un nuevo suceso a la misma conexión. De forma predeterminada, estos datos se toman del entorno local, pero los nodos se pueden configurar para que tomen los datos de cualquier ubicación, incluidos el campo Correlid y los ID de mensajes de las cabeceras de WebSphere MQ.