ActiveMq 自学(四) 集成SpringMvc+Spring框架

ActiveMq 自学(四) 集成SpringMvc+Spring框架


          前面写了很多有关ActiveMq的一些使用案例,基本都是JAVA硬码调用。对于集成在Spring框架还是有一定的繁琐,而Spring早已经有了消息监听接口,用来处理队列请求。下面我们来学习一下在Spring上集成ActiveMq是怎么做的。
其中的重点则是用到了Spring中的JMS框架。

在一个Spring框架中,也是使用配置文件来激活Mq,并通过配置信息来控制MQ的发送对象。(集成效果)
--------------------------------------------------------------------------------------------------------------------------------------------
1.首先我们需要在配置文件中,配置Mq的连接工厂,有看过(一)(二)的朋友应该知道,在我们使用前肯定要连接上我们的ActiveMq服务器。
<amq:connectionFactory id="amqConnectionFactory"
	brokerURL="tcp://localhost:61616" userName="admin" password="***"  /> 
Mq中默认的账户密码都是admin。(修改用户密码--可到MQ应用中conf文件下找到对应用户信息配置文件进行手动修改后重启服务)

2.配置完对应的MQ连接工厂后,我们就要使用到Spring中JMS框架来与之关联,
	<!-- Spring Caching连接工厂 -->
	<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
		<!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->  
  		<property name="targetConnectionFactory" ref="amqConnectionFactory"></property>
		<!-- Session缓存数量 -->
		<property name="sessionCacheSize" value="100" />
	</bean>
3.设置队列使用类型(使用点对点的队列还是发布/订阅类型)
<!-- Spring JmsTemplate 的消息生产者 start-->
	<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
		<!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->  
		<constructor-arg ref="connectionFactory" />
		<!-- 非pub/sub模型(发布/订阅),即队列模式 -->
		<property name="pubSubDomain" value="false" />
	</bean>
	<!--Spring JmsTemplate 的消息生产者 end-->
4.最后一步则是写出对应的点对点队列 (通过Spring注入获取对应的执行类)
<!-- 消息消费者 start-->
	<!-- 定义Queue监听器 -->
	<jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto">	
		<jms:listener destination="队列名" ref="队列执行类"/>
	</jms:listener-container>
以上则是配置完毕了。

那么我们怎么让去触发呢。
Spring--JMS框架中已经给我们封装好了,jmsTemplate类中实现了对队列的发送。
jmsTemplate在上面的配置中我们已经注了对应的类。
     <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">

        我自定义个了个类用来专门调用发送接口:
public class QueueSender {
	
	@Autowired
	@Qualifier("jmsQueueTemplate")
	private JmsTemplate jmsTemplate;//通过@Qualifier修饰符来注入对应的bean
	
	
	public void send(String queueName,final Object message){
			jmsTemplate.send(queueName, new MessageCreator() {
			public Message createMessage(Session session) throws JMSException {
				ObjectMessage mes = session.createObjectMessage((Serializable)message);
				return mes;
			}
		});
	}
}

  我们发送的是以对象流的形式发送过去。(其中queueName就是我们之前配置的destination-- 每个队列的名称,也就是每个队列最终的目的地是发送到哪里,我们的配置中通过ref指向了对应的实现类去执行


接收方也需要用ObjectMessage对象去接受对应的信息。


在接收方我们也有Spring-JMS对应的处理,使用MessageListener(信息监听器)。

之前我们提到了destination指定目的地(通过配置我们指向了一个对应的实现类那么这个实现类就是我们的目的地类也就是接收方!),那么接收方就要去实现这个MessageListener接口,并重写onMessage方法(也就是具体的逻辑处理了!)

public class Queue implements MessageListener{
    public void onMessage(Message message) {
		ObjectMessage param=  (ObjectMessage)message;
		(***)param.getObject();
        

    }

}
    获取对象并强制转换成对应的对象。这样MQ就执行完毕了!











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值