Seleccionar página

MDB con anotaciones POJO – EJB3 – @MessageDriven

por | Ene 18, 2007 | General

MDB con anotaciones POJO – EJB3 – @MessageDriven

Antaño (y sigue siendo válido) se configuraban las queues y las topics dejando un fichero .xml en el directorio deploy de JBoss AS.

En el siguiente ejemplo, tengo el fichero centralita-service.xml:

<!-- servicios requeridos por el servicio principal de neodoo centralita -->
<server>

    <!-- topic jms de eventos y respuestas
    -->
    <mbean code="org.jboss.mq.server.jmx.Topic" name="Neodoo.centralita:service=Topic,name=CentralitaOutTopic">
        <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
    </mbean>

    <!-- queue jms para envio de comandos
    -->
    <mbean code="org.jboss.mq.server.jmx.Queue" name="Neodoo.centralita:service=Queue,name=CentralitaInQueue">
        <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
    </mbean>

</server>

Con los EJB3 y las anotaciones POJO, este fichero no es necesario puesto que al instanciar el MDB si la queue/topic no existe, la crea según lo que hayamos puesto en @MessageDriven:

Ejemplo de Queue:

...

import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnectionFactory;
import javax.jms.Topic;
import javax.jms.TopicConnectionFactory;

@MessageDriven(mappedName = "queue/CentralitaInQueue",
activationConfig = {
    @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),
    @ActivationConfigProperty(propertyName="destination", propertyValue="queue/CentralitaInQueue")
}
)
public class ConectorJBoss Conector implements MessageListener {

    /** Se ejecuta cuando se recibe un mensaje JMS */
    public void onMessage(Message message) {

        ObjectMessage objMessage = (ObjectMessage) message;

        // ...

    }

    ....

}

Ejemplo de Topic:

...

import com.neodoo.centralita.client.ApduCentralita;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;

@MessageDriven(mappedName = "topic/CentralitaOutTopic",
    activationConfig =  {
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/CentralitaOutTopic")//,
        //@ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable")//,
        //@ActivationConfigProperty(propertyName = "clientId", propertyValue = "Topic1"),
        //@ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "Topic1")
    }
)
public class CallCenterMessageListenerImpl implements MessageListener {

    /** Listener de la centralita */
    private CallCenterMessageListener messageListener;

    /** Constructor */
    public CallCenterMessageListenerImpl() {
    }

    /** Se ejecuta cuando se recibe un mensaje JMS */
    public void onMessage(Message message) {

        ObjectMessage objMessage = (ObjectMessage) message;

        // ...

    }

    ....

}

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Blog de Neodoo Microsystems
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles. Puedes encontrar más información en nuestra Política de privacidad y Política de cookies.