Desarrollo de una tarea que envía un mensaje JMS (Java Message Service)

Cree una tarea que envíe un mensaje Java™ Message Service (JMS) a una cola o a un tema. La API del planificador y la API de WASScheduler MBean dan soporte a diferentes implementaciones de la interfaz TaskInfo, cada una de las cuales puede utilizarse para planificar un tipo de trabajo concreto.

Acerca de esta tarea

Para crear una tarea que envíe un mensaje JMS (Java Message Service) a una cola o un tema, realice estos pasos.

Procedimiento

  1. Cree una instancia de la interfaz MessageTaskInfo utilizando el método de fábrica Scheduler.createTaskInfo(). Mediante un archivo JSP (JavaServer Pages), servlet o componente EJB, cree la instancia como se muestra en el ejemplo de código siguiente:
    //buscar el planificador a utilizar
    Scheduler scheduler = (Scheduler)new InitialContext.lookup("java:comp/env/Scheduler");
    
    MessageTaskInfo taskInfo = (MessageTaskInfo) scheduler.createTaskInfo(MessageTaskInfo.class);
    También puede utilizar la herramienta wsadmin, crear la instancia como se muestra en el siguiente ejemplo de script JACL:# Ejemplo crear una tarea utilizando
     el tipo de tarea MessageTaskInfo
    # Llame a este mbean con los parámetros siguientes:
    #    <nombre_jndi planificador>    = Nombre JNDI del recurso de planificador, 
    #                                        por ejemplo, scheduler/myScheduler
    #    <nombre JNDI de QCF>          = Nombre JNDI global de la fábrica de conexiones de cola.
    #    <nombre JNDI de la cola>      = Nombre JNDI global del destino de cola
    
    set jndiName [lindex $argv 0]
    set jndiName_QCF [lindex $argv 1]
    set jndiName_Q [lindex $argv 2]
    
    # Correlacione el nombre JNDI con el nombre mbean.  El nombre mbean se forma sustituyendo la barra / en el nombre jndi
    # con . y colocando el prefijo Scheduler_
    regsub -all {/} $jndiName "." jndiName
    set mbeanName Scheduler_$jndiName
    
    puts "Búsqueda del MBean del planificador $mbeanName"
    set sched [$AdminControl queryNames WebSphere:*,type=WASScheduler,name=$mbeanName]
    puts $sched
    
    # Obtenga el formato ObjectName del MBean del planificador
    set schedO [$AdminControl makeObjectName $sched]
    
    # Cree un objeto MessageTaskInfo mediante invoke_jmx
    puts "Creating MessageTaskInfo"
    set params [java::new {java.lang.Object[]} 1]
    $params set 0 [java::field com.ibm.websphere.scheduler.MessageTaskInfo class]
    
    set sigs [java::new {java.lang.String[]} 1]
    $sigs set 0 java.lang.Class
    
    set ti [$AdminControl invoke_jmx $schedO createTaskInfo $params $sigs]
    set mti [java::cast com.ibm.websphere.scheduler.MessageTaskInfo  $ti]
    puts "Created the MessageTaskInfo object: $mti"
    Atención: La creación de un objeto MessageTaskInfo no añade la tarea al almacén persistente. En vez de esto, crea un espacio reservado para los datos necesarios. La tarea no se añade al almacén persistente hasta que se invoque el método create() en un planificación, tal como se describe en el tema Someter una tarea a un planificación.
  2. Establezca los parámetros en el objeto MessageTaskInfo. La interfaz TaskInfo contiene varios métodos set() que se pueden utilizar para controlar la ejecución de la tarea, incluyendo cuando va a ejecutarse la tarea y el trabajo que ésta realiza al iniciarse.

    La interfaz TaskInfo especifica valores de comportamiento adicionales, tal como se describe en la documentación de la API. Mediante un archivo JSP (JavaServer Pages), servlet o componente EJB, cree la instancia como se muestra en el ejemplo de código siguiente:

    //crear un objeto fecha que representa 30 segundos a partir de este momento
    java.util.Date startDate = new java.util.Date(System.currentTimeMillis()+30000);
    
    
    //establecer la hora de arranque y los nombres JNDI para la fábrica de conexiones de cola y la cola
    taskInfo.setConnectionFactoryJndiName("jms/MyQueueConnectionFactory");
    taskInfo.setDestination("jms/MyQueue");
    taskInfo.setStartTime(startDate);
    También puede utilizar la herramienta wsadmin y crear la instancia como se muestra en el siguiente ejemplo de script JACL:
    # Configure la tarea 
    puts "Setting up the task..."
    # Establezca startTime si desea que la tarea se ejecute a una hora
    determinada, por ejemplo:
    $mti setStartTime [java::new {java.util.Date long} [java::call System currentTimeMillis]]
    
    # Establezca StartTimeInterval para que la tarea se ejecute en 30 segundos
    a partir del momento actual
    $mti setStartTimeInterval 30seconds
    
    # Establezca el nombre JNDI global de la QCF y de la cola a la que se deben enviar los mensajes.
    $mti setConnectionFactoryJndiName $jndiName_QCF
    $mti setDestinationJndiName $jndiName_Q
    
    # Establezca el mensaje
    $mti setMessageData "Test Message"
    
    # No depure la tarea al completarse
    $mti setAutoPurge false
    
    # Establezca el nombre de la tarea.  Puede ser cualquier valor de serie.
    $mti setName Created_by_MBean
    
    # Si la tarea necesita ejecutarse con una autorización concreta, puede
    establecer el alias de autenticación de las tareas.
    # Los alias de autenticación se crean mediante la consola administrativa.
    # $mti setAuthenticationAlias {myRealm/myAlias}
    
    puts "Task setup completed."

Resultados

Se ha creado un objeto MessageTaskInfo que contiene todos los datos relevantes para una tarea que envía un mensaje JMS.

Qué hacer a continuación

Someta la tarea a un planificador para su creación, tal como se describe en el tema Someter una tarea a un planificador.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_schedulemtask
File name: tsch_schedulemtask.html