Acerca del ejemplo de Resultados de fútbol

El ejemplo Resultados de fútbol utiliza el tipo de mensajería de publicación/suscripción para transportar datos. Para más información, lea lo referente a mensajería de publicación/suscripción en la documentación de WebSphere Message Brokers.

El ejemplo Resultados de fútbol muestra un servicio de recopilación de resultados que informa del resultado de un partido de fútbol mientras se juega el partido. El ejemplo consta de una o más aplicaciones de publicador, que simula y publica los resultados del partido, y una aplicación de suscriptor que se suscribe a los resultados de todos los partidos que se juegan. A medida que se marquen goles en los partidos simulados, se publicará la información sobre la hora en la que se marcó el gol y qué equipo lo marcó.

El ejemplo Resultados de fútbol incluye dos aplicaciones pequeñas que se ejecutan desde la línea de mandatos:

El ejemplo Resultados de fútbol muestra las siguientes características de las aplicaciones de publicación/suscripción de WebSphere Message Brokers:

El ejemplo Resultados de fútbol realiza las siguientes acciones:

  1. Cuando se inicia la aplicación SoccerResults, se registran las siguientes suscripciones con el intermediario:
  2. Cuando se inicia una instancia de la aplicación SoccerGame, ésta simula un partido de fútbol entre dos equipos.
  3. Cuando el partido empieza, finaliza o se marca un gol, la aplicación SoccerGame publica (y muestra) información de sucesos en la cola SOCCER_PUBLICATION acerca de los siguientes temas:
  4. Los mensajes que contiene la información de sucesos se pasan a través del flujo de mensajes SoccerPublish a la cola de suscripción SOCCER_SUBSCRIPTION.
  5. SoccerResults recibe las publicaciones de la cola SOCCER_SUBSCRIPTION porque, en el paso 1, SoccerResults se ha suscrito a todas las publicaciones sobre el tema Sport/Soccer/Event/#. Ninguna de estas publicaciones se retienen porque cuando se recibe una nueva publicación, las publicaciones anteriores ya no interesan al suscriptor.
  6. Cuando SoccerResults recibe cada publicación publica el resultado y la información de estado sobre el tema en el intermediario: Sport/Soccer/State/LatestScore/Team1 Team2 donde Team1 y Team2 son los nombres de los equipos del partido. El intermediario guarda esta información de estado como publicación retenida.
  7. Si el servidor de resultados de SoccerResults sufre una anomalía durante un partido, cuando se reinicia emite un mandato Request Update para solicitar publicaciones retenidas en el Sport/Soccer/State/LatestScore/#, que ha publicado antes de que sufriera la anomalía. Esto significa que el servidor de resultados puede reconstruir el estado del juego que había cuando se detuvo el servidor. A continuación puede procesar todas las publicaciones de sucesos para el tema Sport/Soccer/Event/# que están en la cola SOCCER_SUBSCRIPTION, que publicó SoccerGame y procesó el flujo de mensajes mientras el servidor de resultados estaba detenido. Incluso cuando el servidor de resultados de SoccerResults ha sufrido una anomalía, sigue estando suscrito al tema porque no ha emitido el mandato Deregister Subscriber solicitando anular el registro.

Los siguientes apartados describen los recursos del ejemplo más detalladamente:

Los mensajes de publicación

El ejemplo Resultados de fútbol utiliza mensajes XML que se autodefinen que tienen una plantilla de mensaje estándar que contiene:

La aplicación SoccerGame utiliza la información de esta plantilla de mensajes para publicar un mensaje que contiene información de sucesos para la cola SOCCER_PUBLICATION. Por ejemplo, cuando empieza un partido, la aplicación SoccerGame publica un mensaje que contiene los siguientes datos en la cabecera MQRFH2:

<psc>
   <Command>Publish</Command>
   <Topic>Sport/Soccer/Event/MatchStarted</Topic>
</psc>

Cuando la aplicación SoccerResults publica el último resultado del partido entre Team1 y Team2, el mensaje que publica contiene los siguientes datos en su cabecera MQRFH2:

<psc>
   <Command>Publish</Command>
   <PubOpt>Retain</PubOpt><Topic>Sport/Soccer/State/LatestScore/Team1 Team2</Topic>
</psc>

El flujo de mensajes

La siguiente figura muestra el flujo de mensajes SoccerPublish, que procesa los mensajes de publicación del ejemplo Resultados de fútbol.

Una captura de pantalla del flujo de mensajes SoccerPublish.

La siguiente tabla lista los tipos de nodos que se utilizan en el flujo de mensajes SoccerPublish.

Tipo de nodo Nombre de nodo
MQInput SOCCER_PUBLICATION
Publication Publish Results

Si desea ver más información, lea lo referente a los nodos en el flujo de mensajes SoccerPublish y los flujos de mensajes en la documentación de WebSphere Message Brokers.

El flujo de mensajes SoccerPublish es muy simple porque sólo contiene dos nodos.El nodo MQInput se configura para identificar la cola de publicaciones de SOCCER_PUBLICATION como su cola de entrada. Cuando la aplicación de publicador SoccerGame publica información de sucesos, como un mensaje XML que se autodefine, a la cola SOCCER_PUBLICATION, el nodo MQInput obtiene el mensaje y lo pasa al nodo Publish Results Publication.

El nodo Publication publica el mensaje en la aplicación de suscriptor SoccerResults, que se ha suscrito al tema en el que se ha publicado la información de sucesos.

Las colas de WebSphere MQ

El flujo de mensajes del ejemplo Resultados de fútbol interactúa con dos colas de WebSphere MQ. Las colas están definidas en el gestor de colas WBRK6_DEFAULT_QUEUE_MANAGER que aloja el intermediario en el que se ejecuta el flujo de mensajes.

La tabla siguiente muestra las colas que utiliza el flujo de mensajes SoccerPublish y cómo interactúan.

Flujo de mensajes Cola Cómo utiliza la cola el flujo de mensajes
SoccerPublish SOCCER_PUBLICATION Obtiene publicaciones de sucesos que una o más instancias de la aplicación de publicador del partido de fútbol ha publicado en la cola.
SOCCER_SUBSCRIPTION Coloca las publicaciones en la cola para que la aplicación de suscriptor de SoccerResults las obtenga y publique en el intermediario.

Icono de la página principal   Volver a la Página de presentación de ejemplos