2010-06-01 13 views
8

tengo un ejemplo de trabajo de enviar el mensaje al servidor y el servidor que recibe a través de mensajes qpid. Aquí es hola mundo sencilla de enviar al servidor:Java JMS de mensajería

http://pastebin.com/M7mSECJn

Y aquí es el servidor que recibe las solicitudes y envía la respuesta (el cliente actual no recibe respuesta):

http://pastebin.com/2mEeuzrV

aquí es mi archivo de propiedades:

http://pastebin.com/TLEFdpXG

Todos funcionan perfectamente, puedo ver los mensajes en la cola de qpid a través de la consola de administración de Qpid JMX. Estos ejemplos se descargan desde https://svn.apache.org/repos/asf/qpid/trunk/qpid/java/client/example (alguien puede necesitarlo también).

que he hecho usando la mensajería Jboss primavera antes, pero no puedo llegar a hacer lo mismo con qpid. Con JBoss dentro applicationsContext que tenía granos jndiTemplate, conectionFactory, destinationQueue y jmscontainer así:

<!-- Queue configuration --> 
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
    <property name="environment"> 
    <props> 
    <prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop> 
    <prop key="java.naming.provider.url">jnp://localhost:1099</prop> 
    <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop> 
    <prop key="java.naming.security.principal">admin</prop> 
    <prop key="java.naming.security.credentials">admin</prop> 
    </props> 
    </property> 
</bean> 

<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiTemplate" ref="jndiTemplate" /> 
    <property name="jndiName" value="ConnectionFactory" /> 
</bean> 

<bean id="queueDestination" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiTemplate" ref="jndiTemplate" /> 
    <property name="jndiName"> 
    <value>queue/testQueue</value> 
    </property> 
</bean> 

    <bean id="jmsContainer" 
    class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 
    <property name="connectionFactory" ref="connectionFactory" /> 
    <property name="destination" ref="queueDestination" /> 
    <property name="messageListener" ref="listener" /> 
</bean> 

y del remitente curso y el oyente:

<bean id="sender" class="com.practice.Sender"> 
    <property name="connectionFactory" ref="connectionFactory" /> 
    <property name="queueDestination" ref="queueDestination" /> 
</bean> 


<bean id="listener" class="com.practice.MsgListener" /> 

Ahora me gustaría volver a escribir este ejemplo usando qpid lógica de contexto de primavera. ¿Alguien puede ayudarme?

Respuesta

1

primavera ofrece la clase JmsTemplate. Compruebe this página web que tiene un ejemplo de cómo configurar la plantilla (con activemq)

Para su ejemplo específico sustituya el jmsContainer esto:

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
    <property name="connectionFactory" ref="connectionFactory" /> 
</bean> 

Usted también tiene que cambiar su código para utilizar JmsTemplate la primavera:

public class MessageSender { 

    private Destination destination; 
    private JmsTemplate jmsTemplate; 

    public void setJmsTemplate(JmsTemplate jmsTemplate) { 
     this.jmsTemplate = jmsTemplate; 
    } 

    public void setDestination(Destination destination) { 
     this.destination = destination; 
    } 

    public void sendMessage() { 
     MessageCreator creator = new MessageCreator() { 
      public Message createMessage(Session session) { 
       TextMessage message = null; 
       try { 
        message = session.createTextMessage(); 
        message.setStringProperty("text", "Hello, World!"); 
       } 
       catch (JMSException e) { 
        e.printStackTrace(); 
       } 
       return message; 
      } 
     }; 
    jmsTemplate.send(destination, creator); 
    } 
} 

también hay una buena documentación en el sitio de SpringSource this

+0

Así rry no pude configurar el appcontext primavera adecuadamente puede usted por favor, puesto otro grano de configuraciones para su ejemplo, no tiene por qué ser la mía, así que sólo se puede ver ejemplo a continuación, poner en práctica en la mía – London

Cuestiones relacionadas