目录

一、Pom.xml

二、Spring配置文件

三、队列

四、主题


一、Pom.xml

<dependencies><!-- activemq核心依赖包  --><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.10.0</version></dependency><!--  嵌入式activemq的broker所需要的依赖包   --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.10.1</version></dependency><!-- activemq连接池 --><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-pool</artifactId><version>5.15.10</version></dependency><!-- spring支持jms的包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>5.2.1.RELEASE</version></dependency><!--spring相关依赖包--><dependency><groupId>org.apache.xbean</groupId><artifactId>xbean-spring</artifactId><version>4.15</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.2.1.RELEASE</version></dependency><!-- Spring核心依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.23.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.23.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>4.3.23.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.3.23.RELEASE</version></dependency>
</dependencies>

二、Spring配置文件

<?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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--  开启包的自动扫描  --><context:component-scan base-package="com.atguigu.activemq"/><!--  配置生产者  --><bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"><property name="connectionFactory"><!--      正真可以生产Connection的ConnectionFactory,由对应的JMS服务商提供      --><bean class="org.apache.activemq.spring.ActiveMQConnectionFactory"><property name="brokerURL" value="tcp://193.179.123.10:61616"/></bean></property><property name="maxConnections" value="100"/></bean><!--  这个是队列目的地,点对点的Queue  --><bean id="destinationQueue" class="org.apache.activemq.command.ActiveMQQueue"><!--    通过构造注入Queue名    --><constructor-arg index="0" value="spring-active-queue"/></bean><!--  Spring提供的JMS工具类,他可以进行消息发送,接收等  --><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"><!--    传入连接工厂    --><property name="connectionFactory" ref="connectionFactory"/><!--    传入目的地    --><property name="defaultDestination" ref="destinationQueue"/><!--    消息自动转换器    --><property name="messageConverter"><bean class="org.springframework.jms.support.converter.SimpleMessageConverter"/></property></bean>
</beans>

三、队列

(一)生产者

@Service
public class SpringMQ_Produce {@Autowiredprivate JmsTemplate jmsTemplate;public static void main(String[] args) {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");SpringMQ_Produce produce = (SpringMQ_Produce) applicationContext.getBean("springMQ_Produce");
//        produce.jmsTemplate.send(new MessageCreator() {
//            @Override
//            public Message createMessage(Session session) throws JMSException {
//                TextMessage textMessage = session.createTextMessage("spring整合MQ");
//                return textMessage;
//            }
//        });produce.jmsTemplate.send((Session session) -> {TextMessage textMessage = session.createTextMessage("spring整合MQ");return textMessage;});System.out.println("send task over");}
}

(二)消费者

@Service
public class SpringMQ_Consumer {@Autowiredprivate JmsTemplate jmsTemplate;public static void main(String[] args) {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");SpringMQ_Consumer consumer = (SpringMQ_Consumer) applicationContext.getBean("springMQ_Consumer");String revalue = (String)consumer.jmsTemplate.receiveAndConvert();System.out.println("消费者收到消息:"+revalue);}
}

四、主题

(一)spring配置文件修改(橙色为修改或者添加)

<!--  开启包的自动扫描  -->
<context:component-scan base-package="com.atguigu.activemq.spring"/>
<!--  配置生产者  -->
<bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"><property name="connectionFactory"><!--      真正可以生产Connection的ConnectionFactory,由对应的JMS服务商提供      --><bean class="org.apache.activemq.spring.ActiveMQConnectionFactory"><property name="brokerURL" value="tcp://192.168.23.100:61616"/></bean></property><property name="maxConnections" value="100"/>
</bean><!--  这个是队列目的地,点对点的Queue  -->
<bean id="destinationQueue" class="org.apache.activemq.command.ActiveMQQueue"><!--    通过构造注入Queue名    --><constructor-arg index="0" value="spring-active-queue"/>
</bean><!--  这个是队列目的地,  发布订阅的主题Topic-->
<bean id="destinationTopic" class="org.apache.activemq.command.ActiveMQTopic"><constructor-arg index="0" value="spring-active-topic"/>
</bean><!--  Spring提供的JMS工具类,他可以进行消息发送,接收等  -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"><!--    传入连接工厂    --><property name="connectionFactory" ref="connectionFactory"/><!--    传入目的地    --><property name="defaultDestination" ref="destinationTopic"/><!--    消息自动转换器    --><property name="messageConverter"><bean class="org.springframework.jms.support.converter.SimpleMessageConverter"/></property>
</bean>

(二)生产者和消费者

可以看到前面的生产者和消费者的代码中我们并没有指定使用队列还是主题,所以代码无需改动,但是要注意主题需要先启动消费者。

(三)在spring中实现消费者不启动,直接通过配置监听完成

上面的主题相当于我们之前的同步阻塞方式,接下来我们实现异步阻塞方式

(1)spring配置文件添加

<!--配置监听程序--><bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory"/><property name="destination" ref="destinationTopic"/><!--public class myMessageListener implements MessafeListener--><property name="messageListener" ref="myMessageListener"/></bean>

(2)编写监听类

@Component
public class myMessageListener implements MessageListener {@Overridepublic void onMessage(Message message) {if(null != message && message instanceof TextMessage) {TextMessage textMessage = (TextMessage)message;System.out.println("监听到消息:"+textMessage.getText());}}
}

(3)只启动生产者,不启动消费者,自动会监听记录

Spring整合Activemq相关推荐

  1. Spring整合ActiveMQ完成消息队列MQ编程

    <–start–> 第一步:新建一个maven,将工程命名为activeMQ_spring.在pom.xml文件中导入相关jar包. ①spring开发和测试相关的jar包: spring ...

  2. ActiveMQ —— Spring 整合 ActiveMQ

    前文 消息中间件 -- 简介 ActiveMQ 下载.安装 ActiveMQ -- Java 连接 ActiveMQ(点对点) ActiveMQ -- Java 连接 ActiveMQ(发布订阅 To ...

  3. java 消息队列详解_Java消息队列-Spring整合ActiveMq的详解

    本篇文章主要介绍了详解Java消息队列-Spring整合ActiveMq ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.概述 首先和大家一起回顾一下Java 消息服 ...

  4. activimq java集成_Java消息队列-Spring整合ActiveMq

    1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Jav ...

  5. Java消息队列-Spring整合ActiveMq

    1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个或多个程序之间的耦合,底层由Jav ...

  6. ActiveMQ学习总结(3)——spring整合ActiveMQ

    2019独角兽企业重金招聘Python工程师标准>>> 1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇 ...

  7. Spring整合ActiveMQ接收消息

    操作步骤 第一步:把Activemq相关的jar包,添加到工程中 第二步:创建一个MessageListener的实现类,负责监听 第三步:配置MessageListener监听器 第四步:初始化Sp ...

  8. spring整合activeMQ遇到异常:Error creating bean with name 'connectionFactory'

    异常详情 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connect ...

  9. ActiveMQ与spring整合

    2019独角兽企业重金招聘Python工程师标准>>> 1 生产者 第一步:引用相关的jar包. <dependency> <groupId>org.spri ...

最新文章

  1. 马化腾公开信:AI将成为基础设施,腾讯要打造“数字生态共同体”
  2. 第五周项目二-游戏中的角色类(1)
  3. 龙芯团队 在移值 MIPS64 下的.NET Core 进度速报
  4. 教师计算机提升学到的知识,计算机教学质量提升措施浅谈.doc
  5. gdb好文章:GDB十分钟教程
  6. Entity Framework Core 3.1 和 Entity Framework 6.4 发布
  7. Xor Sum 2(位运算)
  8. 字符串匹配のKMP【@Abandon】
  9. LINUX7安装APACHE
  10. 计算机网络flash实训报告,flash动画实训总结精选 .doc
  11. python可以手眼定标吗_北京高碑店小学生Python编程周末班
  12. 浏览器播放m3u8文件
  13. 中国计算机学会青年计算机科技论坛
  14. INVALID_PARAMETER 订单信息无法识别,建议联系卖家。 支付宝
  15. dreamer Waver cc 2014 安装失败解决
  16. 服装设计师和时尚达人必看的实用网站信息大全
  17. 樱花樱花想见你 (中日歌词+罗马音+音译)
  18. linux 键盘测试程序员,程序员之家打字测试
  19. js实现天降字母打字小游戏
  20. eDiary 个人日记本使用技巧

热门文章

  1. WebServer-master
  2. 名悦集团驾驶小知识之隧道行车的注意事项,安全第一位
  3. RationalDMIS 2020平面度评价
  4. 2021年考研英语二真题pdf
  5. 【C语言】详解 memset() 函数用法
  6. 数学中的常见的距离公式
  7. 郑州长城计算机学校新蔡分校怎么样,郑州市第四中学分校
  8. wxml 判断 小程序_微信小程序(一)WXML模板
  9. 2020 网络流行语大全!你知道几个?
  10. python导入xlrd_无法导入xlrd modu