Diferencia entre revisiones de «Message Driven POJO»

De Dos Ideas.
Saltar a: navegación, buscar
(Ver también)
Línea 23: Línea 23:
 
</code>
 
</code>
  
== Configuración de Spring ==
+
== Configuración básica de Spring ==
 
Lo siguiente es realizar la configuración correspondiente en los archivos de configuración de Spring. La clase clave de esta configuración es ''org.springframework.jms.listener.DefaultMessageListenerContainer'', el cual declara al bean que se encargará de conectarse al destino [[JMS]] para consumir los mensajes y delegar su procesamiento a nuestro MDP. Esta clase permite configurar la cantidad de consumidores concurrentes, transaccionalidad, selectores y mucho más.  
 
Lo siguiente es realizar la configuración correspondiente en los archivos de configuración de Spring. La clase clave de esta configuración es ''org.springframework.jms.listener.DefaultMessageListenerContainer'', el cual declara al bean que se encargará de conectarse al destino [[JMS]] para consumir los mensajes y delegar su procesamiento a nuestro MDP. Esta clase permite configurar la cantidad de consumidores concurrentes, transaccionalidad, selectores y mucho más.  
  
Línea 63: Línea 63:
 
</beans>
 
</beans>
 
</code>
 
</code>
 +
 +
== Propiedades de la clase DefaultMessageListenerContainer ==
  
 
== Ver también ==
 
== Ver también ==

Revisión del 16:04 26 oct 2009

Spring Framework provee soporte para crear consumidores JMS usando POJOs. De esta manera, Spring brinda los llamados Message Driven POJO (MDP), que resulta ser una alternativa liviana a los Message Driven Bean que forman parte de la especificación Java EE. Con los MDP podemos obtener un comportamiento similar a los MDB, pero sin la necesidad de contar con un Servidor de Aplicaciones.

Creación del POJO

La clase que consumirá los mensajes que lleguen al destino JMS será un bean cualquier declarado en Spring, el cual deberá implementar la interfaz javax.jms.MessageListener. Por lo tanto, un MDB es un MDP; es decir, un MDP implementa la misma interfaz que implementan los MDB. Por lo tanto, podemos usar a un MDB existente como si fuera un MDP.

Un ejemplo de este bean podría ser:

package com.dosideas.mdp;

import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage;

public class HolaMundoMdp implements MessageListener {

   public void onMessage(Message message) {
       TextMessage textMessage = (TextMessage) message;
       //procesar mensaje...
   }

}

Configuración básica de Spring

Lo siguiente es realizar la configuración correspondiente en los archivos de configuración de Spring. La clase clave de esta configuración es org.springframework.jms.listener.DefaultMessageListenerContainer, el cual declara al bean que se encargará de conectarse al destino JMS para consumir los mensajes y delegar su procesamiento a nuestro MDP. Esta clase permite configurar la cantidad de consumidores concurrentes, transaccionalidad, selectores y mucho más.

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

   <bean id="mdp.HolaMundoMdbp" class="com.dosideas.mdp.HolaMundoMdp"/>
   <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate" />
   <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiTemplate">
           <ref bean="jndiTemplate" />
       </property>
       <property name="jndiName">
           <value>jms/ConnectionFactory</value>
       </property>
   </bean>
   <bean id="queue" class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiTemplate">
           <ref bean="jndiTemplate" />
       </property>
       <property name="jndiName">
           <value>jms/EjemploQueue</value>
       </property>
   </bean>
   <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
       <property name="concurrentConsumers" value="5" />
       <property name="connectionFactory" ref="connectionFactory" />
       <property name="destination" ref="queue" />
       <property name="messageListener" ref="mdp.HolaMundoMdbp" />        
   </bean>

</beans>

Propiedades de la clase DefaultMessageListenerContainer

Ver también