Hi, All,

I have tried to write a JMS with Spring, but failed. no compiler error, no runtime error, just wait infinitely, can't receive message, but I am sure the ActiveMQ is publishing data in 'STOCKS.SUNW' topic.

Anybody has some clues ? Thanks.

///////////////////////// MessageReceiver.java /////////////////////////
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;

import org.springframework.jms.core.JmsTemplate;

public class MessageReceiver {
private JmsTemplate jmsTemplate;
   public MessageReceiver() {
   }

   public void setJmsTemplate(JmsTemplate jmsTemplate) {
       this.jmsTemplate = jmsTemplate;
} public void receiveMessage() { System.out.println("receiving"); Message message = jmsTemplate.receive(); // wait infinitely
       System.out.println("Message="+message); // never reach here
       TextMessage textMessage = null;
       if (message instanceof TextMessage) {
           textMessage = (TextMessage) message;
           //....
       }
   }
}

/////////////////////////////////

//////////////////////// spring beans xml /////////////////////
<?xml version="1.0"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd";>

<beans>
<bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
       <property name="brokerURL" value="tcp://localhost:61616" />
   </bean>

<bean id="sampleJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="activeMQConnectionFactory" />
       <property name="defaultDestination">
           <ref bean="defaultDestination" />
       </property>
<property name="receiveTimeout">
     <value>3000000</value>
   </property>
</bean>

   <bean id="messageReceiver" class="com.MessageReceiver">
       <property name="jmsTemplate" ref="sampleJmsTemplate" />
   </bean>
<bean id="defaultDestination" class="org.apache.activemq.command.ActiveMQQueue">
       <constructor-arg value="STOCKS.SUNW" />
   </bean>
</beans>

/////////////////////////// main class /////////////////////////

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

   public static void main(String[] args) throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("appContext.xml");

MessageReceiver receiver = (MessageReceiver) ctx.getBean("messageReceiver");

       receiver.receiveMessage();

   }

}

Reply via email to