使用maven
java
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>${activemq-Version}</version> </dependency>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jms="http://www.springframework.org/schema/jms" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd"> <!-- ================Factory、connection 初始化 begin================--> <!-- Factory(提供:JMS服務廠商) --> <bean id="jmsTargetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616" /> </bean> <!-- 池化、緩存Factory、connection、session、producer(提供:activeMQ服務廠商) --> <!-- <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"> <property name="connectionFactory" ref="targetConnectionFactory" /> <property name="maxConnections" value="10" /> </bean> --> <!-- Factory封裝(提供:spring) --> <!-- SingleConnectionFactory<返回惟一的connection> --> <!-- <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> <property name="targetConnectionFactory" ref="pooledConnectionFactory" /> </bean> --> <!-- CachingConnectionFactory<將connection池化> --> <bean id="jmsConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <property name="targetConnectionFactory" ref="jmsTargetConnectionFactory" /> </bean> <!-- ================Factory、connection 初始化 end================--> <!-- ================工具 初始化 begin================--> <!-- Spring提供的JMS工具類,它能夠進行消息發送、接收等 <<通常用來做爲生成者>>--> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="jmsConnectionFactory" /> </bean> <!-- ================工具 初始化 end================--> <!-- >>>>>>>>>>>>註冊獎勵 begin<<<<<<<<<<<<<<<--> <!-- 目的地 begin--> <bean id="registerDestination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg> <value>rechargeQueue</value> </constructor-arg> </bean> <!-- 目的地 end--> <!-- 消費者監聽器 begin--> <!-- 消息監聽器 --> <bean id="registerListener" class="com.javass.model.jms.RegisterListener" /> <!-- 消息監聽容器 --> <bean id="registerJmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory" /> <property name="destination" ref="registerDestination" /> <property name="messageListener" ref="registerListener" /> <property name="sessionTransacted" value="true"/> </bean> <!-- 消費者監聽器 end--> <!-- >>>>>>>>>>>>>>>註冊獎勵 begin<<<<<<<<<<<<<<<<<<<--> <!-- >>>>>>>>>>>>>>>>>>>>>>發送短信 begin<<<<<<<<<<<<<<<<--> <!-- 目的地 begin--> <bean id="smsDestination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg> <value>smsQueue</value> </constructor-arg> </bean> <!-- 目的地 end--> <!-- 消費者監聽器 begin--> <!-- 消息監聽器 --> <bean id="smsListener" class="com.javass.model.jms.MessageListenerTest" /> <!-- 消息監聽容器 --> <bean id="smsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory" /> <property name="destination" ref="smsDestination" /> <property name="messageListener" ref="smsListener" /> <property name="sessionTransacted" value="true"/> </bean> <!-- 消費者監聽器 end--> <!-- >>>>>>>>>>>>>>>>>>>>>>發送短信 end<<<<<<<<<<<<<<<<<<<<<--> </beans>
發送 public class TestJmsController implements BaseLogger { private JmsTemplate jmsTemplate; private Queue smsDestination; public void sendJMS() { HashMap<String, String> map = new HashMap<String, String>(); map.put("firest", "hello jms"); map.put("secend", "i did it"); this.jmsTemplate.convertAndSend(smsDestination, map); } @Autowired @Qualifier(value = "jmsTemplate") public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } @Autowired @Qualifier(value = "smsDestination") public void setSmsDestination(Queue smsDestination) { this.smsDestination = smsDestination; } } 監聽處理 public class MessageListenerTest implements MessageListener { @Override public void onMessage(Message message) { if (message instanceof MapMessage) { MapMessage mpMessage = (MapMessage) message; try { String firest = mpMessage.getString("firest"); String secend = mpMessage.getString("secend"); System.out.println("firest:" + firest + " secend " + secend); } catch (JMSException e) { throw new RuntimeException("[transaction-reback]"); } } else { throw new IllegalArgumentException("Message must be of type MapMessage"); } } }