例行demo,记录 java
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("接受异常"); } } }
<?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>
同步 spring
http://blog.csdn.net/moonsheep_liu/article/details/6683190
apache
异步 session
http://blog.csdn.net/moonsheep_liu/article/details/6684948
异步