spring整合jms

spring整合jms

1 下載 

        使用maven
java

<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-all</artifactId>
			<version>${activemq-Version}</version>
		</dependency>

2 配置

<?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>

3 使用

發送


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");
		}
	}

}
相關文章
相關標籤/搜索