activeMQ

例行demo,记录


package com.test.activeMQ;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * @ClassName: TestSender
 * @Description:消息发送
 * @date 2015-7-24
 * @version 1.0
 * @since JDK1.6
 */
public class TestSender{
	// 连接工厂
	private ConnectionFactory connectionFactory;
	private Connection connection;
	private Session session;
	// 队列
	private Destination destination;
	//异步发送
	private MessageProducer messageProducer;
	/**
	 * @Title: sendMsg
	 * @param: msg
	 * @return:void
	 * @Description:初始化连接
	 */
	
	public void sendMsg(String msg) {
		try {
			connection = connectionFactory.createConnection();
			connection.start();
			// 第一个参数非事务性 ,第二个参数表示接收消息后会自动答复
			session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			// 创建队列
			destination = session.createQueue("testQueue");
			// 创建发送者
			messageProducer = session.createProducer(destination);
			//创建发送
			createMsg(session, messageProducer, msg);

		} catch (JMSException e) {
			e.printStackTrace();
		} finally {
			try {
				if(null != connection)
					connection.close();
			} catch (Throwable ignore) {
			}
		}
	}
	/**
	 * @Title: createMsg
	 * @return:void
	 * @Description:创建发送消息
	 */
	private void createMsg(Session session, MessageProducer messageProducer, String msg) {
		try {
			TextMessage message = session.createTextMessage("testQueue 消息:"
					+ msg);
			System.out.println("我是发送信息:" + msg);
			messageProducer.send(message);
		} catch (JMSException e) {
			e.printStackTrace();
		}

	}

	public void setConnectionFactory(ConnectionFactory connectionFactory) {
		this.connectionFactory = connectionFactory;
	}
}



package com.test.activeMQ;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
/**
 * @ClassName: TestListerner
 * @Description:异步监听消息
 * @date 2015-7-24
 * @version 1.0
 * @since JDK1.6
 */
class TestListerner implements MessageListener {
	/**
	 * @Title: onMessage
	 * @return:void
	 * @Description:有消息时自动触发
	 * @throws Exception
	 */
	public void onMessage(Message message) {
		try {
			System.out.println("========我是接受分隔线===========");
			System.out.println(((TextMessage)message).getText());
		} catch (JMSException e) {
			System.out.println("接受异常");
		}
	}
}



spring



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

	<!--创建连接工厂 -->
	<!--可选 连接池 org.apache.activemq.pool.PooledConnectionFactory -->
	<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
		<!--failover断线重连机制 -->
		<property name="brokerURL" value="failover:(tcp://localhost:61616)" />
	</bean>
	
	<!--发送者 -->
	<bean id="testSender" class="com.test.activeMQ.TestSender">
		<property name="connectionFactory" ref="connectionFactory"/>
	</bean>
	
	<!--入口Action -->
	<bean id="sendAction" class="com.test.activeMQ.action.TestAction">
		<property name="testSender" ref="testSender"/>
	</bean>
	
	<!-- 创建消息队列 -->
	<bean id="testQueue" class="org.apache.activemq.command.ActiveMQQueue">
		<!-- 队列名 -->
		<constructor-arg>
			<value>testQueue</value>
		</constructor-arg>
	</bean>

	<!--同步方式监听 
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
		<property name="connectionFactory" ref="connectionFactory" />
		超时时间
		<property name="receiveTimeout" 
		value="6000" /> 
	</bean>-->

	<!-- 消息队列监听,实现接收消息onMessage方法 -->
	<bean id="testListener" class="com.test.activeMQ.TestListerner"></bean>

	<!-- 异步方式消息监听容器,需配置连接工厂,被监听队列,监听器 -->
	<bean id="testListenerContainer"
		class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="connectionFactory" />
		<property name="destination" ref="testQueue" />
		<property name="messageListener" ref="testListener" />
	</bean>
</beans>

同步

http://blog.csdn.net/moonsheep_liu/article/details/6683190

异步

http://blog.csdn.net/moonsheep_liu/article/details/6684948


你可能感兴趣的:(activeMQ)