SpringMVC整合ActiveMQ

文章目录

  • 一、Spring整合ActiveMQ实战
    • 1.1. 创建一个父工程:
    • 1.2. 引入依赖
    • 1.3. 创建一个子项目生产者
    • 1.4. 创建一个spring配置文件
    • 4. 创建一个点对点的生产者监听
    • 5. 创建一个topic的生产者监听
  • 四、Spring整合ActiveMQ实战
    • 1. 创建一个消费者工程
    • 2. 引入依赖
    • 3. 创建spring配置文件
    • 4. 配置消费者监听类和测试类
      • 4.1 监听类
      • 4.2. 测试类
    • 5. 创建生产者测试类
      • 5.1. 启动生产者测试类
      • 5.2. 登录后台,消息成功投递
      • 5.3. 启动消费者测试类
      • 5.4. 启动1个生产者,2个消费者
    • 5.5. 登陆后台
  • 六、topic 生产者
    • 6.1. 生产者代码
    • 6.2. 生产者配置文件
    • 6.3. 生产者测试类
    • 6.4. 消费者监听代码
    • 6.5. 消费者配置文件
    • 6.6. 消费者测试类
    • 6.7. 启动2个消费者,1个生产者
      • 6.7.1. 2个消费者
      • 6.7.2. 个生产者
      • 6.7.3. 登录后台

一、Spring整合ActiveMQ实战

1.1. 创建一个父工程:





1.2. 引入依赖

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gblfy.mq</groupId><artifactId>springjms-parent</artifactId><version>1.0-SNAPSHOT</version><modules><module>springjms-producer</module></modules><packaging>pom</packaging><name>springjms-parent Maven Webapp</name><url>http://www.gblfy.com</url><properties><!--全局编码设置--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--全局maven编译版本--><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><!--全局版本控制--><spring.version>4.2.4.RELEASE</spring.version><activemq.version>5.13.4</activemq.version><junit.version>4.9</junit.version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client</artifactId><version>${activemq.version}</version></dependency></dependencies>
</project>

1.3. 创建一个子项目生产者

  • 项目名称:springjms_producer



  • 项目创建完成!!!

1.4. 创建一个spring配置文件

applicationContext-jms-producer.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.xsdhttp://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.gblfy.springjms"></context:component-scan><!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->  <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  <property name="brokerURL" value="tcp://192.168.25.135:61616"/>  </bean><!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->  <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">  <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->  <property name="targetConnectionFactory" ref="targetConnectionFactory"/>  </bean>  <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->  <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->  <property name="connectionFactory" ref="connectionFactory"/>  </bean>      <!--这个是队列目的地,点对点的  文本信息-->  <bean id="queueTextDestination" class="org.apache.activemq.command.ActiveMQQueue">  <constructor-arg value="queue_text"/>  </bean>
</beans>

4. 创建一个点对点的生产者监听

package com.gblfy.springjms.monitor.queue;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;@Component
public class QueueProducer {@Autowiredprivate JmsTemplate jmsTemplate;@Autowiredprivate Destination queueTextDestination;/*** 发送文本消息* @param text*/public void sendTextMessage(final String text){jmsTemplate.send(queueTextDestination, new MessageCreator() {public Message createMessage(Session session) throws JMSException {return session.createTextMessage(text);}});}
}

5. 创建一个topic的生产者监听

package com.gblfy.springjms.monitor.topic;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;@Component
public class TopicProducer {@Autowiredprivate JmsTemplate jmsTemplate;@Autowiredprivate Destination topicTextDestination;/*** 发送文本消息* @param text*/public void sendTextMessage(final String text){jmsTemplate.send(topicTextDestination, new MessageCreator() {public Message createMessage(Session session) throws JMSException {return session.createTextMessage(text);}});}
}

四、Spring整合ActiveMQ实战

1. 创建一个消费者工程







项目搭建完成!!!

2. 引入依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gblfy.springjms</groupId><artifactId>springjms_consumer</artifactId><version>0.0.1-SNAPSHOT</version><properties><spring.version>4.2.4.RELEASE</spring.version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client</artifactId><version>5.13.4</version></dependency></dependencies>  </project>

3. 创建spring配置文件

applicationContext-jms-consumer-queue.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.xsdhttp://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context.xsd"><!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->  <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  <property name="brokerURL" value="tcp://192.168.25.135:61616"/>  </bean><!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->  <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">  <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->  <property name="targetConnectionFactory" ref="targetConnectionFactory"/>  </bean>  <!--这个是队列目的地,点对点的  文本信息-->  <bean id="queueTextDestination" class="org.apache.activemq.command.ActiveMQQueue">  <constructor-arg value="queue_text"/>  </bean>    <!-- 我的监听类 --><bean id="myMessageListener" class="com.gblfy.springjms.MyMessageListener"></bean><!-- 消息监听容器 --><bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory" /><property name="destination" ref="queueTextDestination" /><property name="messageListener" ref="myMessageListener" /></bean></beans>

4. 配置消费者监听类和测试类

4.1 监听类

package com.gblfy.springjms;import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;public class MyMessageListener implements MessageListener {public void onMessage(Message message) {TextMessage textMessage=(TextMessage)message;try {System.out.println("接收到消息:"+textMessage.getText());} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

4.2. 测试类

package com.gblfy.springjms.test;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.io.IOException;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext-jms-consumer-queue.xml")
public class TestQueue {@Testpublic void testQueue(){try {System.in.read();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

5. 创建生产者测试类

package com.gblfy.springjms.test;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.gblfy.springjms.QueueProducer;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext-jms-producer.xml")
public class TestQueue {@Autowiredprivate  QueueProducer queueProducer;@Testpublic void testSend(){queueProducer.sendTextMessage("spring JMS 点对点");}
}

验证

5.1. 启动生产者测试类

5.2. 登录后台,消息成功投递

5.3. 启动消费者测试类


5.4. 启动1个生产者,2个消费者



5.5. 登陆后台

六、topic 生产者

6.1. 生产者代码

package com.gblfy.springjms;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;@Component
public class TopicProducer {@Autowiredprivate JmsTemplate jmsTemplate;@Autowiredprivate Destination topicTextDestination;/*** 发送文本消息* @param text*/public void sendTextMessage(final String text){jmsTemplate.send(topicTextDestination, new MessageCreator() {public Message createMessage(Session session) throws JMSException {return session.createTextMessage(text);}});}
}

6.2. 生产者配置文件

<?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.xsdhttp://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.gblfy.springjms"></context:component-scan><!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->  <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  <property name="brokerURL" value="tcp://192.168.43.103:61616"/></bean><!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->  <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">  <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->  <property name="targetConnectionFactory" ref="targetConnectionFactory"/>  </bean>  <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->  <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->  <property name="connectionFactory" ref="connectionFactory"/>  </bean>      <!--这个是订阅模式  文本信息-->  <bean id="topicTextDestination" class="org.apache.activemq.command.ActiveMQTopic">  <constructor-arg value="topic_text"/>  </bean>  </beans>

6.3. 生产者测试类

package com.gblfy.springjms.test;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.gblfy.springjms.TopicProducer;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext-jms-producer.xml")
public class TestTopic {@Autowiredprivate  TopicProducer topicProducer;@Testpublic void testSend(){topicProducer.sendTextMessage("spring JMS 发布订阅");}
}

6.4. 消费者监听代码


package com.gblfy.springjms;import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;public class MyMessageListener implements MessageListener {public void onMessage(Message message) {TextMessage textMessage=(TextMessage)message;try {System.out.println("接收到消息:"+textMessage.getText());} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}    

6.5. 消费者配置文件

<?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.xsdhttp://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context.xsd"><!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->  <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  <property name="brokerURL" value="tcp://192.168.43.103:61616"/></bean><!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->  <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">  <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->  <property name="targetConnectionFactory" ref="targetConnectionFactory"/>  </bean>  <!--这个是队列目的地,点对点的  文本信息-->  <bean id="topicTextDestination" class="org.apache.activemq.command.ActiveMQTopic">  <constructor-arg value="topic_text"/>  </bean>    <!-- 我的监听类 --><bean id="myMessageListener" class="com.gblfy.springjms.MyMessageListener"></bean><!-- 消息监听容器 --><bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory" /><property name="destination" ref="topicTextDestination" /><property name="messageListener" ref="myMessageListener" /></bean></beans>

6.6. 消费者测试类

package com.gblfy.springjms.test;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.io.IOException;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext-jms-consumer-topic.xml")
public class TestTopic {@Testpublic void testTopic(){try {System.in.read();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

6.7. 启动2个消费者,1个生产者

6.7.1. 2个消费者


6.7.2. 个生产者

6.7.3. 登录后台

企业级实战02_SpringMVC整合ActiveMQ 实战需求相关推荐

  1. 实战01_SSM整合ActiveMQ支持多种类型消息

    ActiveMQ能干什么? 主要功能涉及JMS Provider用来帮助实现高可用.高性能.高伸缩.易用的企业级面向消息服务的系统. ActiveMQ支持消息类型如下: 1.StreamMessage ...

  2. 实战07_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战06_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572147 1.S ...

  3. 实战06_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战05_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572129 1.S ...

  4. 实战05_SSM整合ActiveMQ支持多种类型消息

    接上一篇:实战04_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572124 1.Str ...

  5. 实战03_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战02_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572053 1.S ...

  6. 实战02_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战01_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100557400 Act ...

  7. 企业级实战03_真实项目实战SpringMVC整合ActiveMQ

    创建2个工程,生产者和消费者 测试点对点和广播 发送常见类型的消息 例如:文本(String).对象(Object) 文本转Long String text = "123"; Lo ...

  8. 04_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战03_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572104 1.S ...

  9. ASP.NET典型三层架构企业级医药行业ERP系统实战(8大模块22个子系统,价值3000万)

    ASP.NET典型三层架构企业级医药行业ERP系统实战(8大模块22个子系统,价值3000万) 课程讲师:Tiger     课程分类:.net         适合人群:高级       课时数量: ...

最新文章

  1. win10 vs2015 编译caffe2
  2. linux 股票指南针,IOS开发入门之ios指南针
  3. 小C的数学问题 线段树+分治
  4. Windows系统安装Mysql前运行库依赖
  5. HTML前端数据管理,前端数据管理
  6. select的使用及缺陷
  7. no ip domain-lookup 是什么意思?
  8. 微软亚洲研究院2017年笔试编程题
  9. 看完这一篇,智能家居的坑你至少避开80%(上)
  10. 情绪识别(python opencv dlib)
  11. java 取上界_java-泛型及上界下界详解
  12. [转] Boost算法
  13. java 弹幕 原理_Flutter 实现虎牙/斗鱼 弹幕效果
  14. ifup,ifdown命令详解
  15. 【嵌入式百科】003——时钟周期、指令周期、机器周期、总线周期
  16. 用R进行多元线性回归分析建模
  17. Vue-生命周期的理解+生命周期图示的理解
  18. react引入d3相关问题
  19. Competition4_t3
  20. html 获取电脑ip地址,笔记本自动获取ip地址怎么设置?

热门文章

  1. Fast Matrix Factorization for Online Recommendation with Implicit Feedback论文代码分析
  2. ubuntu怎么在jupyter notebook中引入anaconda虚拟环境
  3. C语言fscanf函数了解
  4. MyBatis3.x和Spring3.x的整合
  5. 软件分析与设计:分析什么?如何设计?
  6. 阿里高级技术专家方法论:如何写复杂业务代码?
  7. Spark in action on Kubernetes - Playground搭建与架构浅析
  8. 阿里云应用高可用服务公测发布
  9. [新品发布]全球首个百万IOPS云盘来了 阿里云推出超高性能云盘ESSD
  10. 【产品活动】阿里云GPU云服务器年付5折!阿里云异构计算助推行业发展!