Spring整合ActiveMQ:spring+JMS+ActiveMQ+Tomcat

发布时间:2017-2-22 21:19:40 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Spring整合ActiveMQ:spring+JMS+ActiveMQ+Tomcat ",主要涉及到Spring整合ActiveMQ:spring+JMS+ActiveMQ+Tomcat 方面的内容,对于Spring整合ActiveMQ:spring+JMS+ActiveMQ+Tomcat 感兴趣的同学可以参考一下。

一、目录结构

 

相关jar包

二、关键配置activmq.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amq="http://activemq.apache.org/schema/core"    xmlns:jms="http://www.springframework.org/schema/jms"    xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-4.0.xsd           http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context-4.0.xsd        http://www.springframework.org/schema/jms        http://www.springframework.org/schema/jms/spring-jms-4.0.xsd        http://activemq.apache.org/schema/core        http://activemq.apache.org/schema/core/activemq-core-5.8.0.xsd">    <!-- ActiveMQ 连接工厂 -->     <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->    <!-- 如果连接网络:tcp://ip:61616;未连接网络:tcp://localhost:61616 以及用户名,密码-->    <amq:connectionFactory id="amqConnectionFactory"        brokerURL="tcp://localhost:61616" userName="admin" password="admin"  />    <!-- Spring Caching连接工厂 -->     <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->      <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">        <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->            <property name="targetConnectionFactory" ref="amqConnectionFactory"></property>          <!-- 同上,同理 -->        <!-- <constructor-arg ref="amqConnectionFactory" /> -->        <!-- Session缓存数量 -->        <property name="sessionCacheSize" value="100" />    </bean>        <!-- Spring JmsTemplate 的消息生产者 start-->        <!-- 定义JmsTemplate的Queue类型 -->    <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">        <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->          <constructor-arg ref="connectionFactory" />        <!-- 非pub/sub模型(发布/订阅),即队列模式 -->        <property name="pubSubDomain" value="false" />    </bean>        <!-- 定义JmsTemplate的Topic类型 -->    <bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">         <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->          <constructor-arg ref="connectionFactory" />        <!-- pub/sub模型(发布/订阅) -->        <property name="pubSubDomain" value="true" />    </bean>        <!--Spring JmsTemplate 的消息生产者 end-->        <!-- 消息消费者 start-->        <!-- 定义Queue监听器 -->    <jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto">        <jms:listener destination="test.queue" ref="queueReceiver1"/>        <jms:listener destination="test.queue" ref="queueReceiver2"/>    </jms:listener-container>        <!-- 定义Topic监听器 -->    <jms:listener-container destination-type="topic" container-type="default" connection-factory="connectionFactory" acknowledge="auto">        <jms:listener destination="test.topic" ref="topicReceiver1"/>        <jms:listener destination="test.topic" ref="topicReceiver2"/>    </jms:listener-container>        <!-- 消息消费者 end --></beans>  

 三、关键代码

1、生产者

1.1 点对点生产者

package com.wjy.activemq.mq.producer.queue;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.Session;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.core.MessageCreator;import org.springframework.stereotype.Component;/** * @description  队列消息生产者,发送消息到队列 *  */@Component("queueSender")public class QueueSender {        @Autowired    @Qualifier("jmsQueueTemplate")    private JmsTemplate jmsTemplate;//[email protected]        /**     * 发送一条消息到指定的队列(目标)     * @param queueName 队列名称     * @param message 消息内容     */    public void send(String queueName,final String message)    {        jmsTemplate.send(queueName, new MessageCreator(){            @Override            public Message createMessage(Session session) throws JMSException             {                return session.createTextMessage(message);            }

上一篇:使用Navicat for Oracle新建表空间、用户及权限赋予 (转)
下一篇:MySQL: Fabric 搭建 HA

相关文章

相关评论