作者:追梦1819

原文:https://www.cnblogs.com/yanfei1819/p/11190048.html

版权声明:本文为博主原创文章,转载请附上博文链接!

引言

  前一章节中,我们详细阐述了 ActiveMQ 的安装和使用。其实在网站发展壮大的过程中,消息中间件是无法忽视的技术框架,其重要性在前一章也作了详细的说明。如此重要的技术,SpringBoot 生态圈自然也是不会"放过"的了,必然要集成到它的体系中去。

  本章将阐述 SpringBoot 整合 ActiveMQ。

使用

首先创建项目,引入 maven 依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- 该启动器是后面做测试用,非必须的 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

第二步,配置相关信息:

spring.activemq.broker-url=tcp://xxx:61616
spring.activemq.in-memory=true
spring.activemq.pool.enabled=false

第三步,创建消息生产者:

package com.yanfei1819.activemq.producer;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;
import javax.jms.Destination; /**
* Created by 追梦1819 on 2019-06-26.
*/
@Component
public class Producer {
@Autowired
private JmsMessagingTemplate template;
public void sendMessage(Destination destination, String message){
template.convertAndSend(destination,message);
}
}

第四步,创建消息消费者:

package com.yanfei1819.activemq.consumer;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service; /**
* Created by 追梦1819 on 2019-06-26.
*/
@Service
public class Consumer {
@JmsListener(destination = "active.queue")
public void receive(String text) {
System.out.println("consumer接收到的报文为:" + text);
}
}

最后,创建测试接口:

package com.yanfei1819.activemq.web.controller;

import com.yanfei1819.activemq.producer.Producer;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import javax.jms.Destination; /**
* Created by 追梦1819 on 2019-06-26.
*/
@Controller
public class ActivemqController { @Autowired
private Producer producer; @ResponseBody
@RequestMapping("/test")
public void test(){
Destination destination=new ActiveMQQueue("active.queue");
for (int i = 0; i <50 ; i++) {
producer.sendMessage(destination,"我是追梦1819,我的微信公众号是 technology-and-life ");
}
}
}

对以上代码作一个简单的说明:

  1. 为了简化模型来说明 SpringBoot 中 Activemq 的使用,以上的消息生产者和消息消费者都只做了最简单的模拟,没有任何逻辑;
  2. 以上的测试使用接口进行测试(作者比较喜欢这种方式),不局限这种方式,读者可以用单元测试。

启动项目,先看看 ActiveMQ 界面:

可以看到生产出来的消息,已经被注入到 ActiveMQ 中去了。

然后再访问以上测试接口:http://localhost:8080/test,再看 ActiveMQ 界面:

生产者生产的消息,被消费者消费。

控制台的信息是:

  以上演示了 ActiveMQ 在 SpringBoot 项目中的使用。其余的一些详细的测试,读者可以按照前一章 ActiveMQ 的说明,自行测试。此处由于篇幅所限,就不做冗余阐述。

总结

  看完以上的示例,读者应该能继续感受到 SpringBoot 框架的"开箱即用"的特性和极简模式。关注几个注解或者几个组件,就能用的很顺畅。

  但是,还是重复那句,框架的封装度越高,用起来越简单,但是对底层的原理的理解越难。如果碰到了问题,也更难追踪。所以作者建议读者,特别是新人或者刚接触 SpringBoot 的读者,一定要在使用的基础上,去理解每一个被整合的框架的使用和原理(当然,如果基础好,能够读底层源码更好了)。万不可为了使用而使用。就像一个同事说的,如果哪一天 Spring 生态圈被别的框架取代了,那你就失业了。

  忧患意识一定要保持着。

![](https://img2018.cnblogs.com/blog/1183871/201907/1183871-20190715170856893-614409026.png)

SpringBoot第二十一篇:整合ActiveMQ的更多相关文章

  1. Python开发【第二十一篇】:Web框架之Django【基础】

    Python开发[第二十一篇]:Web框架之Django[基础]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...

  2. SpringBoot第二十三篇:安全性之Spring Security

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11350255.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   系统的安全 ...

  3. SpringBoot第二十篇:初识ActiveMQ

    本文是作者之前写的关于 ActiveMQ 的一篇文章.此处为了保证该系列文章的完整性,故此处重新引入. 一.消息中间件的介绍 介绍 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数 ...

  4. SpringBoot非官方教程 | 第二十一篇: springboot集成JMS

    转载请标明出处: http://blog.csdn.net/forezp/article/details/71024024 本文出自方志朋的博客 springboot对JMS提供了很好的支持,对其做了 ...

  5. Python之路【第二十一篇】:JS基础

    JavaScript的基础学习(一) 一.JavaScript概述 1.1 JavaScript的历史 ● 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在 ...

  6. Python之路【第二十一篇】Django ORM详解

    ORM回顾 关系对象映射(Object Relational Mapping,简称ORM). django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 对于ORM框 ...

  7. SpringBoot第十一篇:SpringBoot+MyBatis+Thymelaf实现CRUD

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10936304.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   总结前面几 ...

  8. Python之路(第二十一篇) re模块

    一.re模块 正则表达式本身是一种小型的.高度专业化的编程语言,正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是re,正则表达式模式被编译成一系列的字节码,然 ...

  9. 【Python之路】第二十一篇--Memcached、Redis

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

随机推荐

  1. WPF支持OneWay,TwoWay,OneTime,Default和OneWayToSource

    原文:WPF支持OneWay,TwoWay,OneTime,Default和OneWayToSource 无论是目标属性还是源属性,只要发生了更改,TwoWay 就会更新目标属性或源属性. OneWa ...

  2. Selenium-等待

    分为3种 (1)就是通过线程强制等待 Thread.sleep(1000); (2)隐示等待.就是所有的命令都等待.分为3种 // 这个方法表示全局的等待.意思是针对所有的findElement方法都 ...

  3. 【windows】常见的系统环境变量,如%appdata%表示什么意思

    原文:[windows]常见的系统环境变量,如%appdata%表示什么意思 1.介绍 %appdata%就代表了C:Users\用户名\AppData\Roaming这个文件夹. “%”是系统变量的 ...

  4. 第一个kotlin程序

    class ccc { companion object { @JvmStatic fun main(args: Array<String>) { println("hello! ...

  5. 微信小程序把玩(二十四)toast组件

    原文:微信小程序把玩(二十四)toast组件 toast消息提示框,可用在提示一些信息,比如清楚缓存给用户一个友好的提示!或操作一些请求不想让用户有什么操作,toast也可以做到因为toast显示时其 ...

  6. NBU客户端安装失败

    该服务器是阿里云上的centos6.8,是用来做oracle服务器,买来之后进行测试,发现没有安装图形化界面,还有部分包也没有安装.在oracle安装完成之后,尝试安装NBU的客户端,结果发生报错:T ...

  7. Android零基础入门第80节:Intent 属性详解(下)

    上一期学习了Intent的前三个属性,本期接着学习其余四个属性,以及Android系统常用内置组件的启动. 四.Data和Type属性 Data属性通常用于向Action属性提供操作的数据.Data属 ...

  8. C# ACCESS 向含有自动编码字段表中添加记录提示“查询值的数目与目标字段中的数目不同”

    引发错误的SQL语句如下: sqlStr = "insert into tb_ReportLog values('" + DevSite + "','" + D ...

  9. Codility---FrogJmp

    Task description A small frog wants to get to the other side of the road. The frog is currently loca ...

  10. ACM竞赛中的魔方问题专题(不定时更新)

    魔方有6个面,有24中不同的旋转方式: 一般有两种方法: (一):以1面为顶面,向右旋转0,90,180,270度 以2面为顶面,向右旋转0,90,180,270度 ... 以6面为顶面,向右旋转0, ...