Spring与Jms结合的实例

package jms.activemq.myexample.spring;



import java.util.Date;



import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.Session;

import javax.jms.TextMessage;



import org.springframework.jms.core.MessageCreator;



public class MyMessageCreator implements MessageCreator {



	/**

	 * 消息序号

	 */

	private int msgNo;



	public MyMessageCreator(int no) {

		this.msgNo = no;

	}



	@Override

	public Message createMessage(Session session) throws JMSException {

		TextMessage textMsg = session.createTextMessage();

		textMsg.setText(new Date() + "第" + this.msgNo + "条消息发出");



		return textMsg;

	}



}

package jms.activemq.myexample.spring;



import javax.jms.*;



/**

 * Text消息监听

 * 

 * @author xiaochuanyu

 * 

 */

public class TextListener implements MessageListener {



	/**

	 * Casts the message to a TextMessage and displays its text.

	 * 

	 * @param message

	 *            the incoming message

	 */

	public void onMessage(Message message) {

		TextMessage msg = null;



		try {

			if (message instanceof TextMessage) {

				msg = (TextMessage) message;

				System.out.println("Reading message: " + msg.getText());

			} else {

				System.out.println("Message of wrong type: "

						+ message.getClass().getName());

			}

		} catch (JMSException e) {

			System.out.println("JMSException in onMessage(): " + e.toString());

		} catch (Throwable t) {

			System.out.println("Exception in onMessage():" + t.getMessage());

		}

	}

}

package jms.activemq.myexample.spring;



import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;



public class SpringJmsTestMain {



	public static void main(String[] args) throws InterruptedException {



		ApplicationContext context = new ClassPathXmlApplicationContext(

				new String[] { "SpringJms/SpringJms.xml" });



		SpringPublisher publisher = (SpringPublisher) context

				.getBean("springPublisher");

		publisher.start();

	}

}

package jms.activemq.myexample.spring;



import javax.jms.Destination;



import org.springframework.jms.core.JmsTemplate;



public class SpringPublisher {

	/**

	 * Jms模板

	 */

	private JmsTemplate template;



	/**

	 * Topic

	 */

	private Destination topic;



	public JmsTemplate getTemplate() {

		return template;

	}



	public void setTemplate(JmsTemplate template) {

		this.template = template;

	}



	public Destination getTopic() {

		return topic;

	}



	public void setTopic(Destination topic) {

		this.topic = topic;

	}



	/**

	 * Start

	 * 

	 * @throws InterruptedException

	 */

	public void start() throws InterruptedException {



		int messageCount = 10;



		while ((--messageCount) > 0) {

			sendMessage(messageCount);

			Thread.sleep(1000);

		}

	}



	/**

	 * 消息发送

	 */

	protected void sendMessage(int msgNO) {



		this.template.send(this.topic, new MyMessageCreator(msgNO));

	}

}

  
    
<? 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.0.xsd" >



<!-- jms 连接工厂 -->
< bean id ="jmsFactory" class ="org.apache.activemq.ActiveMQConnectionFactory" >
< property name ="brokerURL" >
< value > tcp://localhost:61616 </ value >
</ property >
</ bean >


<!-- jms 连接池 -->

<!--
<bean id="pooledJmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory">
<ref local="jmsFactory" />
</property>
</bean>
-->

<!-- jms Topic -->
< bean id ="myTopic" class ="org.apache.activemq.command.ActiveMQTopic"
autowire
="constructor" >
< constructor-arg value ="STOCKS.JAVA" />
</ bean >


<!-- 消息监听器 -->
< bean id ="myTextListener" class ="jms.activemq.myexample.spring.TextListener" >
</ bean >


<!-- jms Consumer -->
< bean id ="javaConsumer"
class
="org.springframework.jms.listener.DefaultMessageListenerContainer" >
< property name ="connectionFactory" ref ="jmsFactory" />
< property name ="destination" ref ="myTopic" />
< property name ="messageListener" ref ="myTextListener" />
</ bean >

<!-- jms 模板 -->
< bean id ="jmsTemplate" class ="org.springframework.jms.core.JmsTemplate" >
< property name ="connectionFactory" >
< ref local ="jmsFactory" />
</ property >
</ bean >


<!-- 消息发布器 -->
< bean id ="springPublisher" class ="jms.activemq.myexample.spring.SpringPublisher" >
< property name ="template" >
< ref local ="jmsTemplate" />
</ property >
< property name ="topic" >
< ref local ="myTopic" />
</ property >
</ bean >
</ beans >

你可能感兴趣的:(spring)