Diferencia entre revisiones de «Message Driven POJO»

De Dos Ideas.
Saltar a: navegación, buscar
(Creación del POJO)
(JWyHXBKkSwLzgjXhHK)
 
(No se muestran 8 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
[[Spring Framework]] provee soporte para crear consumidores [[JMS]] usando [[POJO]]s. 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]].
+
Kudos to you! I hadn't touhght of that!
 
 
== 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:
 
 
 
<code java>
 
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...
 
    }
 
}
 
</code>
 
 
 
== Configuración 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.
 
 
 
<code xml>
 
<?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>
 
</code>
 
 
 
== Ver también ==
 
* [[JMS]]
 
* [[Spring Framework]]
 
* [http://java-x.blogspot.com/2006/12/implementing-jms-with-spring-message.html Message Driven POJO]
 
* [http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jms/listener/DefaultMessageListenerContainer.html Javadoc de DefaultMessageListenerContainer]
 
 
 
[[Category:Spring Framework]]
 
[[Category:JMS]]
 

Revisión actual del 11:19 6 sep 2011

Kudos to you! I hadn't touhght of that!