zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Struts2-1.配置&与第一个应用
    1.rs.first()、rs.last()、rs.next()、rs.getRow()
    网页跳转
    js---DOM元素节点
    4、BufferedIn(out)putStream--->字节输入/输出流的缓冲区类(高效类:高效率读写)
    3、FileInputStream--->类文件输入流(读取文件数据)
    2、FileOutputStream--->文件输出流(向文件写入数据)
    1、IO输入&输出流 简介
    OutOfMemoryError系列
    Spark调优,性能优化
  • 原文地址:https://www.cnblogs.com/phoebus0501/p/1966896.html
Copyright © 2011-2022 走看看